salida - ¿Cómo definir una macro de preprocesador de C++ a través de la línea de comandos con CMake?
funcion preprocesador en c++ (3)
Intento establecer una macro de preprocesador en la línea de comandos de CMake. He intentado:
set generator="Visual Studio 8 2005"
set params=-D MY_MACRO=1
cmake.exe -G %generator% %params% ../some_project
pero no está definido cuando compilo ni puedo encontrar el nombre MY_MACRO
en los archivos generados por CMake, excepto CMakeCache.txt
donde está presente en la forma:
MY_MACRO:UNINITIALIZED=1
¿Cómo puedo hacerlo?
A menos que tenga una buena razón para no hacerlo , debe usar ADD_DEFINITIONS(<name>=<value>[, ...])
.
Solo agrega la siguiente línea a tu CMakeLists.txt:
ADD_DEFINITIONS("MY_MACRO=1")
CMake se hará cargo de la sintaxis de los conmutadores (ya sea -D<name>=<value>
, o /D<name>=<value>
).
Prueba esto: -D CMAKE_CXX_FLAGS=/DMY_MACRO=1
Una buena alternativa sería definir una opción cmake:
OPTION(DEFINE_MACRO "Option description" ON) # Enabled by default
Seguido de una condición:
IF(DEFINE_MACRO)
ADD_DEFINITIONS(-DMACRO)
ENDIF(DEFINE_MACRO)
Luego puede activar / desactivar esa opción a través de la línea de comandos con cmake usando la marca -D
. Ejemplo:
cmake -DDEFINE_MACRO=OFF ..
Para asegurarse de que el compilador esté recibiendo la definición correcta, puede llamar a make en modo detallado y verificar si la macro se está definiendo o no:
make VERBOSE=1
Esta es una buena solución también porque make
recompilará su código cuando cambie alguna de las opciones de cmake.