7 votes

CMake : Changer le nom des exécutables de Visual Studio et Xcode en fonction de la configuration dans un projet généré par CMake

Ce que je dois faire est de configurer le nom de mon exécutable pour être

program-debug pour les versions de débogage et
program-release (ou autre) pour les autres versions

Je veux le faire de manière véritablement multiplateforme et ce qui est également très important - je veux cibler XCode et VS2008 - donc lorsque je change la configuration dans une sorte de liste déroulante, elle doit également avoir les noms corrects pour la sortie ! Je ne veux pas régénérer .vcproj ou .xcodeproj avec une autre option -D (mais je devrai le faire si je ne trouve pas de solution)

À ma connaissance, la variable cmake CMAKE_BUILD_TYPE devrait fonctionner pour les générateurs basés sur make - elle est évaluée au moment de la compilation (corrigez-moi si je me trompe)

Fondamentalement, il s'agit de configurer les options de cible (pas nécessairement le nom) en fonction de la configuration dans certains IDE/systèmes de construction. Cela peut être trop spécifique par rapport aux objectifs globaux de cmake, mais peut-être pouvez-vous aider.

Merci beaucoup !

15voto

Andre Points 5805

Jetez un œil à la liste des propriétés de la cible : l'une d'elles est la OUTPUT_NAME and OUTPUT_NAME_. Ce dernier peut être défini pour chaque type de configuration (Debug, Release, MinSizeRel, etc.) Vous pouvez les définir sur votre programme avec set_target_properties, par exemple :

project(VotreProjet)

add_executable(monprogramme ${VosSources})
set_target_properties(monprogramme PROPERTIES OUTPUT_NAME_DEBUG programme-debug)
set_target_properties(monprogramme PROPERTIES OUTPUT_NAME_RELEASE programme-release)

Faites attention que vous devez également définir RUNTIME_OUTPUT_NAME_ et/ou LIBRARY_OUTPUT_NAME_ dans certains cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X