CMake在Linux上设置set_target_properties的INCLUDE_DIRECTORIES被忽略了。

6

我有一堆目标,正在尝试基于每个目标设置包含目录。

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个回答

5

这种行为确实是由于从2.8.7版本到2.8.8版本的更改引起的。

更改日志可知:

对每个目标的INCLUDE_DIRECTORIES调用ExpandVariablesInString

更新关于INCLUDE_DIRECTORIES的文档。 [...]

保持INCLUDE_DIRECTORIES目标属性最新。

提取并使用INCLUDE_DIRECTORIES目标属性。

特别要注意的是更改文档的提交。据此得知,在2.8.7中,INCLUDE_DIRECTORIES属性是只读目录上的属性。该版本中根本不存在目标属性。

由于CMake允许设置任意目标属性,因此您的脚本仍能正常运行,但CMake会忽略该属性。

这是另一个很好的例子,说明您应始终指定正确的最低版本


有没有办法检查cmake版本?类似于if (CMAKE_VERSION小于2.8.8),因为我被困在2.8作为我们支持的最低版本。 - user1139069

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接