# CMake中定义编译宏

# add_definitions

add_definitions作为CMAKE中添加编译预处理宏的方法存在了很长时间

使用语法:

# 添加宏定义
add_definitions(-DENABLE_DEBUG)

通过这种方法定义的预处理宏会被当前工程中所有源码使用,这无意间放大了definition工作的范围。

# target_compile_definitions

现在更多的使用方式是target_compile_definitions,其能够限制definitions的定义范围只在当前目标所用源码范围内,并通过PRIVATE参数,限定了链接该目标时是否可见此编译预处理宏定义。

target_compile_definitions(my_target PRIVATE FOO=1 BAR=1)

关于PRIVATE/INTERFACE/PUBLIC修饰的作用可以参考这里 (opens new window)