在什么情况下include_directory在CMake中不起作用?

时间:2019-01-28 23:13:27

标签: cmake

我正在使用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将禁止某些路径?谢谢。

1 个答案:

答案 0 :(得分:1)

/usr/include是标准的包含路径,因此CMake不会将其添加到-I选项-编译器已经知道该路径。我们将添加所有其他内容。


也许也很有趣:

  

如果给出了SYSTEM选项,编译器将被告知   目录是指某些平台上的系统包含目录。   用信号通知此设置可能会达到诸如编译器之类的效果   跳过警告,或者未安装这些固定安装的系统文件   在依赖性计算中考虑-请参阅编译器文档。   (source

因此,您可能要使用

include_directories(
    SYSTEM
        /usr/include
)

但是一般来说,使用SYSTEM不是一个好主意。如果您真的需要使用它-这主要是潜在的更大问题的征兆。