4

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

set_target_properties (foo PROPERTIES INCLUDE_DIRECTORIES ${CMAKE_Fortran_MODULE_DIRECTORY}/bar)

make VERBOSE=1当我在 Mac OS XI 上构建( )这个时

... -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 之前的以前的版本不支持这个吗?

4

1 回答 1

4

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

变更日志

为每个目标的 INCLUDE_DIRECTORIES 调用 ExpandVariablesInString

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

使 INCLUDE_DIRECTORIES 目标属性保持最新。

提取并使用 INCLUDE_DIRECTORIES 目标属性。

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

由于 CMake 允许设置任意目标属性,因此您的脚本仍然可以正常工作,但 CMake 会简单地忽略该属性。

这是另一个很好的例子,为什么您应该始终注意指定正确的最低要求版本

于 2013-06-11T17:50:44.610 回答