cmake set_target_properties INCLUDE_DIRECTORIES在linux上被忽略了

时间:2013-06-11 16:17:45

标签: linux cmake

我有一堆目标,我正在尝试按目标设置包含目录。

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之前的版本是否不支持此功能?

1 个答案:

答案 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