如何通过cmake中的set_source_files_properties使多个属性对一个文件有效?

jxj*_*jxj 4 cmake

我正在为项目编写CMakeLists.txt,并遇到set_source_files_properties的问题.

原始工作表达式是:

set_source_files_properties (a.cpp PROPERTIES COMPILE_DEFINITIONS
    DIR1="/home/xxx/b.i")
Run Code Online (Sandbox Code Playgroud)

然后我尝试添加更多COMPILE_DEFINITIONS,但是失败了.

尝试1:

set_source_files_properties (a.cpp PROPERTIES COMPILE_DEFINITIONS
    DIR1="/home/xxx/b.i" DIR2="/home/xxx/c.i" DIR3="/home/xxx/d.i")
Run Code Online (Sandbox Code Playgroud)

尝试2:

set_source_files_properties (a.cpp PROPERTIES COMPILE_DEFINITIONS
    DIR1="/home/xxx/b.i")
set_source_files_properties (a.cpp PROPERTIES COMPILE_DEFINITIONS
    DIR2="/home/xxx/c.i")
set_source_files_properties (a.cpp PROPERTIES COMPILE_DEFINITIONS
    DIR3="/home/xxx/d.i")
Run Code Online (Sandbox Code Playgroud)

结果:只有最后定义DIR3可以在make编译时在a.cpp中识别,前两个在make阶段报告未定义.

有什么建议?

谢谢!

Rei*_*ica 13

这些set_*_properties()函数是基本用法的缩写.对于"高级"案例,最好使用以下全部功能set_property():

set_property(
  SOURCE a.cpp
  APPEND
  PROPERTY COMPILE_DEFINITIONS
  DIR1="/home/xxx/b.i" DIR2="/home/xxx/c.i" DIR3="/home/xxx/d.i"
)
Run Code Online (Sandbox Code Playgroud)