Cmake add_definitions и COMPILE_DEFINITIONS, как их видеть

Я хочу посмотреть, что представляет собой текущий набор определений компилятора в моем файле CMake. Они автоматически указываются, и те, которые я добавил, были бы замечательными. Макрос COMPILE_DEFINITIONS, как представляется, не содержит - несмотря на то, что говорит документация.

Например, в приведенной ниже настройке сообщение никогда не включает GUI_BUILD

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

Мне не нужно видеть их в их окончательной форме, я просто хочу получить быстрый вывод, чтобы убедиться, что все настроено правильно.

Ответы

Ответ 1

Вы хотите извлечь свойство COMPILE_DEFINITIONS из каталога . Например. используйте следующее:

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

Затем вы можете просто перебрать их, например:

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

Обратите внимание, что определения также могут быть связаны с target или исходными файлами вместо каталогов. И обратите внимание, что они могут отличаться между конфигурациями. В зависимости от ваших требований вам может потребоваться проверить большой набор различных свойств.