多个 CMake 目标的 target_compile_definitions?

ein*_*ica 3 idioms dry cmake compiler-options

有人 告诉我,CFLAGS直接在 CMake 中进行设置是不好的做法,相反,我应该使用该target_compile_definitions()命令。

好的,但是 - 如果我想对多个(独立)目标使用相似/相同的定义怎么办?我不想一遍又一遍地重复自己。

Flo*_*ian 5

我看到了三种可能的方式:

  1. 首选使用target_compile_definitions(... INTERFACE/PUBLIC ...)它会通过target_link_libraries()命令将编译器定义自我传播到依赖于它的目标。

  2. 使用set_property(TARGET target1 target2 ... APPEND PROPERTY COMPILE_DEFINITIONS ...)为多个目标设置相同的定义。

  3. 你仍然可以使用的“旧命令”add_definitions()和remove_definitions()修改COMPILE_DEFINITIONS目录属性(它会预先设置都COMPILE_DEFINITIONS在此目录范围内的目标属性)。

参考