2009-12-08 5 views
3

Quelle est une bonne alternative à Makefile sur windows?Alternative Makefile natif pour Windows

Je compile une collection de fichiers C++ (.cpp et .h) en utilisant cl.exe.

Je préfère ne pas utiliser Makefile, car je veux minimiser la quantité d'utilitaires tiers dont les gens auront besoin pour construire mon application.

Drew J. Sonne.

+0

Une question connexe: http://stackoverflow.com/questions/476163/nant-or-msbuild-which-one-to-choose-and-when –

Répondre

6

VisualStudio est fourni avec nmake qui ne nécessite aucun outil tiers.

+0

VisualStudio n'est-il pas lui-même un outil tiers? – Phe0nix

3

MSBuild, le système de compilation Microsoft. C'est le système de construction basé sur XML utilisé par Visual Studio. Si vous avez Visual C++ installé, MSBuild est installé.

Les fichiers de projet Visual Studio ne sont que des fichiers MSBuild, donc tout ce que vous pouvez faire dans Visual Studio avec des fichiers projet, vous pouvez le faire manuellement (ou inversement, vous pouvez créer des projets Visual Studio en ligne de commande).

1

Je pense que cela dépend des compilateurs C++ que vous prenez en charge pour Windows. Si vous ciblez exclusivement les utilisateurs de Visual Studio, il vous suffit de fournir les fichiers de projet nécessaires car vos utilisateurs peuvent les ouvrir dans l'EDI ou utiliser devenv.exe/msbuild.exe pour créer votre projet via la ligne de commande. Dans ce cas, ma suggestion serait de fournir les fichiers du projet pour la version la plus ancienne de Visual Studio que vous prenez en charge, car les plus récents seront en mesure de convertir les fichiers au format dont ils ont besoin.

Cela devient un peu plus compliqué si vous essayez de prendre en charge d'autres compilateurs C++ pour Windows. Soit vous devrez fournir des fichiers de projet pour tous leurs IDE, ce qui peut être compliqué si vous n'avez pas accès à tous, ou vous devrez choisir le plus petit dénominateur commun, ce qui serait le Makefile le plus simple possible et j'espère que la plupart des programmeurs auront installé, ce qui n'est pas une hypothèse déraisonnable. Si votre logiciel nécessite les bibliothèques Boost, une autre approche consisterait à fournir un ensemble de fichiers .jam, car la plupart des programmeurs qui ont Boost ont probablement un bjam flottant depuis le moment où ils ont construit Boost. Bien que bjam ne soit pas aussi simple que make, il a l'avantage majeur de savoir comment gérer plusieurs compilateurs. Mais je ne considérerais bjam que si le logiciel distribué nécessitait Boost, sinon c'est une autre dépendance non désirée.