c++ - CMake 中的 include_directory 继承?

标签 c++ cmake

我在 CMake 中有 2 个项目 L 和 A,假设 L 是一个库,A 是一个依赖于 L 的应用程序。

文件夹层次结构如下:

  • 一个
    • CMakeLists.txt + headers + src
  • 大号
    • CMakeLists.txt + headers + src
    • 子L
      • 标题+源文件

现在,就包含目录而言,我明白我需要在 L/CMakeLists.txt/include_directories() 中指定 subL,这样 L 中的其他文件可以引用包含文件只需使用 #include "mySubLHeaderFile.h"#include < mySubLHeaderFile.h>

现在,如果我想在 A 项目的文件中引用来自 subL 的头文件,并且能够引用此 subL 文件只需使用 #include "mySubLHeaderFile.h"#include < mySubLHeaderFile.h>,我注意到我需要重新指定 subLA/CMakeLists.txt/include_directories() 中。这是正常行为吗? include_directories() 不是继承自依赖项目吗?

------ 编辑 1 ------

请注意,我在 A 和 L 之上有一个顶级 CMakeLists.txt。

最佳答案

是的,这是 CMake 的 include_directories 命令的标准行为。如果您希望将属性传播给依赖项,请使用 target_include_directories命令成为版本 3 的标准。具体来说,客户端代码所需的 header 位置应位于 PUBLICINTERFACE 部分。如果 SubL 还需要在那里包含 header ,请使用 PUBLIC。查看用于将属性传播到依赖项的整个 target_* 命令系列。

关于c++ - CMake 中的 include_directory 继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48229198/

相关文章:

c++ - 如何在 Visual Studio 2008 中创建 COM DLL?

C++ 非类型模板参数 : Is typedef of an integral type an integral type?

c++ - 如何限制矩阵类只得到 'X' 'O' 或 '.'

python - 我可以为我的 Python 扩展模块(用 C++ 编写)使用替代构建系统吗?

python - 融合 API 和 CMake 构建

c# - 如何从一个方向获得 XY 欧拉角?

c++ - 'constexpr' 标记的变量和静态存储持续时间的变量是否都可以通过具有推导指南的类类型来存储?

CMake:获取根项目名称

c++ - 如何在 CMake 中使用 OpenGL/Angle 编译 QtGui 示例?

c++ - 从程序中获取 cmake 选项