2011-03-23 19 views
17

Quiero ver cuál es el conjunto actual de definiciones del compilador en mi archivo CMake. Se especificaron automáticamente y las que agregué serían geniales. La macro COMPILE_DEFINITIONS no parece contener, a pesar de lo que dice la documentación.cmake add_definitions y COMPILE_DEFINITIONS, cómo verlos

Por ejemplo, en la configuración debajo del mensaje no incluye GUI_BUILD

add_definitions(-DGUI_BUILD) 
message("COMPILE_DEFINITIONS = ${COMPILE_DEFINITIONS}") 

No necesito verlos en su forma final, sólo quiero una salida rápida para ayudar a verificar que todo se ha configurado correctamente.

Respuesta

21

Desea extraer la propiedad COMPILE_DEFINITIONS del directory. P.ej. utilice la siguiente:

add_definitions(-DDebug) 
get_directory_property(DirDefs DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS) 

A continuación, puede iterar sobre ellos, por ejemplo .:

foreach(d ${DirDefs}) 
    message(STATUS "Found Define: " ${d}) 
endforeach() 
message(STATUS "DirDefs: " ${DirDefs}) 

Tenga en cuenta que las definiciones también pueden estar asociados con targets o source-files en lugar de directorios. Y tenga en cuenta que pueden diferir entre las configuraciones. Dependiendo de sus requisitos, es posible que deba verificar un conjunto grande de propiedades diferentes.

+4

Gracias. Simplemente haciendo 'get_directory_property (DirDefs COMPILE_DEFINITIONS)' y 'message (" COMPILE_DEFINITIONS = $ {DirDefs} ")' obtenga lo que quiero. –

+0

Me alegra saber que funciona. No estaba realmente seguro de lo que quería hacer con ellos, por lo que agregué la pequeña lista de impresión y las notas sobre el objetivo y las propiedades de origen. –

+0

Otro comentario, en caso de que lo necesite para la depuración y esté usando el compilador gcc: cmake generará un link.txt y flags.txt, sosteniendo las opciones de línea de comando para el enlazador y el compilador. Usted puede verificar esos también. –