2009-08-05 3 views
3

J'utilise cmake pour construire, tester et installer mon projet. Mon chemin est un peu brut: J'utilise un script comme celui-ci pour obtenir un hors-source de construction:Une bonne façon d'obtenir une construction hors-source dans un projet cmake multi-parties

DIR=debug_build && 
rm -fr ./${DIR} && 
mkdir -p ${DIR} && 
cd ${DIR} && 
cmake -D CMAKE_BUILD_TYPE=Debug [email protected] .. && 
make 

Je suppose que je pourrais au moins mettre en makefile, mais isnt étrange d'utiliser Makefile Lancez cmake pour générer de nouveaux Makefiles et lancer une autre make?

Quelle est la bonne façon de le faire? Est-ce que cmake a une option pour éviter d'appeler "cd"? Récemment, c'est devenu encore plus compliqué à mesure que j'élargissais une bibliothèque que je voudrais compiler, tester et distribuer séparément. Je veux éviter la duplication de tout ce que j'ai dans mon top CMakeLists.txt.

Comment le faire correctement avec cmake?

Répondre

1

Non, CMake n'a pas une telle option. J'aime généralement avoir un wrapper Makefile pour contrôler CMake-invocations.

Le problème principal ici est que le générateur Makefile ne prend pas en charge la spécification de la configuration lors de l'exécution de make, comme le fait le générateur Visual Studio. Je pense qu'il ya une demande de fonctionnalité déposée pour cela, mais ce serait une procédure très invasive à corriger.

+0

Pouvez-vous élaborer sur le problème principal avec l'utilisation de make pour contrôler cmake? –

+0

Contrôler cmake en utilisant un wrapper Makefile n'est pas un problème, vraiment. Je faisais référence au fait que ** doit ** utiliser plusieurs répertoires de build afin de supporter la construction de plusieurs configurations. – JesperE

1

Cela semble être la forme la plus courante de manipulation de ceci. J'ai généralement vu (et utilisé) des scripts de traitement par lots (script shell sur unix, ou simplement des fichiers batch sur Windows) pour gérer cela, donc en cours d'exécution ./build va créer le dossier de construction, CD là, lancer cmake, construire, puis aller retour au dossier d'origine.

0

On pourrait également utiliser l'interface graphique CMake qui créera automatiquement le dossier de construction s'il n'existe pas.

Questions connexes