J’essaie de définir une macro de préprocesseur dans la ligne de commande de CMake. J’ai essayé:
set generator="Visual Studio 8 2005" set params=-D MY_MACRO=1 cmake.exe -G %generator% %params% ..\some_project
mais ce n’est ni défini lors de la compilation, ni trouvé le nom MY_MACRO
dans les fichiers générés par CMake, à l’exception de CMakeCache.txt
où il est présent sous la forme:
MY_MACRO:UNINITIALIZED=1
Comment puis-je le faire?
Une bonne alternative serait de définir une option cmake:
OPTION(DEFINE_MACRO "Option description" ON) # Enabled by default
Suivi d’une condition:
IF(DEFINE_MACRO) ADD_DEFINITIONS(-DMACRO) ENDIF(DEFINE_MACRO)
Ensuite, vous pouvez activer / désactiver cette option via la ligne de commande avec cmake à l’aide de l’option -D
. Exemple:
cmake -DDEFINE_MACRO=OFF ..
Pour vous assurer que le compilateur reçoit bien la définition, vous pouvez appeler make en mode commenté et vérifier si la macro est définie ou non:
make VERBOSE=1
C’est aussi une bonne solution car make
recomstackra votre code lorsque l’une des options de cmake change.
Essayez ceci: -D CMAKE_CXX_FLAGS=/DMY_MACRO=1
À moins que vous n’ayez une bonne raison de ne pas le faire , vous devez utiliser ADD_DEFINITIONS(
.
Ajoutez simplement la ligne suivante à votre fichier CMakeLists.txt:
ADD_DEFINITIONS("MY_MACRO=1")
CMake se chargera de la syntaxe des commutateurs (que ce soit -D
ou /D
).