1 build-automation cmake include-path
使用CMake include_directories命令时,可以指定给定目录是否为系统包含目录.
但是,由于各种原因,我不得不求助于set_target_properties通过设置INCLUDE_DIRECTORIES目标的属性来为同一范围内的不同目标指定不同的包含路径.
但问题是,我无法弄清楚如何告诉CMake目录是一个系统目录,所以它使用-isystem而不是-I在可能的情况下使用.主要是因为该属性只是一个目录路径列表,并没有任何标志.
我以为可能会有SYSTEM_INCLUDE_DIRECTORIES,但我找不到任何提及.
有关如何去做的任何想法?
添加系统目录的正确方法是使用命令的SYSTEM选项include_directories:
include_directories(SYSTEM "/foo/bar")
Run Code Online (Sandbox Code Playgroud)
如果include_directories不是选项,则可以通过直接修改目标的COMPILE_FLAGS属性来指定系统包含目录:
set_target_properties(main PROPERTIES APPEND_STRING PROPERTY
COMPILE_FLAGS " ${CMAKE_INCLUDE_SYSTEM_FLAG_CXX} /foo/bar")
Run Code Online (Sandbox Code Playgroud)
该变量CMAKE_INCLUDE_SYSTEM_FLAG_CXX通常解析为-isystemUNIX系统.
在CMake 2.8.12中,target_include_directories()命令学习了SYSTEM关键字:
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1925cffa083b
CMake 3.0.0(下一个版本)默认情况下会将依赖IMPORTED目标中列出的所有目录视为SYSTEM.
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a63fcbcb9f6c
| 归档时间: |
|
| 查看次数: |
5694 次 |
| 最近记录: |