В CMake> = 2.8, используйте target_compile_definitions
:
target_compile_definitions(MyTarget PUBLIC "$<$<CONFIG:DEBUG>:DEBUG>")
При компиляции в режиме отладки это определит символ DEBUG для использования в вашем коде. Он будет работать даже в таких средах разработки, как Visual Studio и Xcode, для которых cmake создает один файл для всех режимов компиляции.
Вы должны сделать это для каждой цели [1]. В качестве альтернативы вы можете использовать add_compile_options
(Cmake> = 3.0):
add_compile_options("$<$<CONFIG:DEBUG>:-DDEBUG>")
Обратите внимание, что в последних версиях Visual C ++ (по крайней мере, начиная с VS2015) разрешены параметры для одного или нескольких параметров, поэтому он должен нормально работать на всех компиляторах. Эта команда также полезна для других параметров компиляции, которые вы можете добавить («/ O2» в режиме выпуска для MSVC или «-O3» для режима выпуска в G ++ / Clang)
[1]: Примечание: в CMake> = 3.12 (в настоящее время бета) также имеется add_compile_definitions
, который поддерживает выражения генератора, который влияет на все цели.