Definir una macro de preprocesador a través de CMake

Resuelto Mythli asked hace 12 años • 6 respuestas

¿Cómo defino una variable de preprocesador a través de CMake?

El código equivalente sería #define foo.

Mythli avatar Jan 26 '12 18:01 Mythli
Aceptado

Durante mucho tiempo, CMake tuvo el add_definitionscomando para este propósito. Sin embargo, recientemente el comando ha sido reemplazado por un enfoque más detallado (comandos separados para compilar definiciones, incluir directorios y opciones del compilador).

Un ejemplo que utiliza el nuevo add_compile_definitions :

add_compile_definitions(OPENCV_VERSION=${OpenCV_VERSION})
add_compile_definitions(WITH_OPENCV2)

O:

add_compile_definitions(OPENCV_VERSION=${OpenCV_VERSION} WITH_OPENCV2)

Lo bueno de esto es que evita el engañoso truco que CMake tiene implementado add_definitions. CMake es un sistema muy lamentable, pero finalmente están encontrando algo de cordura.

Encuentre más explicaciones sobre qué comandos usar para los indicadores del compilador aquí: https://cmake.org/cmake/help/latest/command/add_definitions.html

Asimismo, puede hacer esto por objetivo como se explica en la respuesta de Jim Hunziker.

ypnos avatar Jan 26 '2012 11:01 ypnos

Para hacer esto para un objetivo específico, puede hacer lo siguiente:

target_compile_definitions(my_target PRIVATE FOO=1 BAR=1)

Debes hacer esto si tienes más de un objetivo que estás construyendo y no quieres que todos usen las mismas banderas. Consulte también la documentación oficial sobre target_compile_definitions .

Jim Hunziker avatar Aug 27 '2015 16:08 Jim Hunziker