Moyen approprié d'obtenir une construction hors source dans un projet cmake en plusieurs parties

StackOverflow https://stackoverflow.com/questions/1230644

  •  22-07-2019
  •  | 
  •  

Question

J'utilise cmake pour créer, tester et installer mon projet. Mon chemin est un peu brutal: j’utilise un script tel que celui-ci pour obtenir une version non-source:

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

Je suppose que je pourrais au moins le mettre dans un makefile, mais n'est-il pas étrange d'utiliser Makefile pour exécuter cmake afin de générer de nouveaux Makefiles et d'exécuter un autre make?

Quelle est la bonne façon de le faire? Cmake a-t-il une option pour éviter d'appeler "cd"?

Récemment, c’est devenu encore plus compliqué lorsque j’ai factorisé une bibliothèque que j’aimerais 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?

Était-ce utile?

La solution

Non, CMake n'a pas cette option. J'aime habituellement avoir un Makefile pour contrôler les invocations de CMake.

Le problème principal ici est que le générateur de fichiers Makefile ne prend pas en charge la spécification de la configuration lors de l'exécution de make, contrairement au générateur Visual Studio. Je pense qu’une demande de fonctionnalité a été déposée à ce sujet, mais que la procédure de réparation serait très invasive.

Autres conseils

Cela semble être la forme de traitement la plus courante. J'ai généralement vu (et utilisé) des scripts batch (soit des scripts shell sous unix, soit simplement des fichiers batch sous Windows) pour le gérer. Exécuter ./build créera le dossier de construction, le CD présent, exécutera cmake, build, puis retour au dossier d'origine.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top