我有一堆目标,我正在尝试按目标设置包含目录。
set_target_properties (foo PROPERTIES INCLUDE_DIRECTORIES ${CMAKE_Fortran_MODULE_DIRECTORY}/bar)
当我在Mac OS X上构建(make VERBOSE=1
)时,我得到了
... -J../build/modules/foo -I../build/modules/bar
当我在Linux上做同样的事情时,我得到了
... -J../build/modules/foo ...
我能看到的唯一区别是在Mac上我使用cmake 2.8.8而在linux上我使用的是2.8.7。 2.8.8之前的版本是否不支持此功能?
答案 0 :(得分:4)
这种行为确实是从2.8.7到2.8.8的版本更改。
来自changelog:
为每个目标的INCLUDE_DIRECTORIES
调用ExpandVariablesInString更新有关INCLUDE_DIRECTORIES的文档。 [...]
使INCLUDE_DIRECTORIES目标属性保持最新。
提取并使用INCLUDE_DIRECTORIES目标属性。
特别感兴趣的是commit changing the documentation。据此,2.8.7中的INCLUDE_DIRECTORIES
属性是目录上的只读属性。该版本中根本不存在目标属性。
由于CMake允许设置任意目标属性,因此您的脚本仍可正常运行,但CMake会忽略该属性。
这是另一个很好的例子,为什么你应该总是照顾specifying the correct minimum required version。