我正在使用CMake进行一个非常大的项目。我试图添加其他包含路径,但失败了。
以下工作原理(在编译命令中带有-I)
include_directories(
${PROJECT_SOURCE_DIR}/src
${CMAKE_CURRENT_BINARY_DIR}
)
以下工作原理(在编译命令中使用-I,与$ {PROJECT_SOURCE_DIR} / abc相同,路径不存在)
include_directories(
abc
)
以下内容也可以使用(/ abc不存在)。
include_directories(
/abc
)
以下内容不会(-I命令忽略此行)
include_directories(
/usr/include
)
那么在什么情况下include_directories将禁止某些路径?谢谢。
答案 0 :(得分:1)
/usr/include
是标准的包含路径,因此CMake不会将其添加到-I
选项-编译器已经知道该路径。我们将添加所有其他内容。
也许也很有趣:
如果给出了SYSTEM选项,编译器将被告知 目录是指某些平台上的系统包含目录。 用信号通知此设置可能会达到诸如编译器之类的效果 跳过警告,或者未安装这些固定安装的系统文件 在依赖性计算中考虑-请参阅编译器文档。 (source)
因此,您可能要使用
include_directories(
SYSTEM
/usr/include
)
但是一般来说,使用SYSTEM
不是一个好主意。如果您真的需要使用它-这主要是潜在的更大问题的征兆。