我有很多目标,我试图在每个目标的基础上设置包含目录。
set_target_properties (foo PROPERTIES INCLUDE_DIRECTORIES ${CMAKE_Fortran_MODULE_DIRECTORY}/bar)
Run Code Online (Sandbox Code Playgroud)
make VERBOSE=1当我在 Mac OS X 上构建 ( ) 时,我得到
... -J../build/modules/foo -I../build/modules/bar
Run Code Online (Sandbox Code Playgroud)
当我在 Linux 上做同样的事情时,我得到了
... -J../build/modules/foo ...
Run Code Online (Sandbox Code Playgroud)
我能看到的唯一区别是,在 mac 上我使用 cmake 2.8.8,而在 linux 上我使用 2.8.7。2.8.8 之前的版本不支持此功能吗?
这个行为确实是从2.8.7到2.8.8的版本变化。
从变更日志:
为每个目标的 INCLUDE_DIRECTORIES 调用 ExpandVariablesInString
更新有关 INCLUDE_DIRECTORIES 的文档。[...]
使 INCLUDE_DIRECTORIES 目标属性保持最新。
提取并使用 INCLUDE_DIRECTORIES 目标属性。
特别令人感兴趣的是更改文档的提交。据此,INCLUDE_DIRECTORIES2.8.7 中的属性是目录的只读属性。目标属性在该版本中根本不存在。
由于 CMake 允许设置任意目标属性,因此您的脚本仍然可以正常运行,不会出现错误,但 CMake 会忽略该属性。
这是另一个很好的例子,说明为什么您应该始终注意指定正确的最低所需版本。
| 归档时间: |
|
| 查看次数: |
4150 次 |
| 最近记录: |