include_directory CMake内部的继承?

include_directory inheritance within CMake?

本文关键字:继承 内部 CMake directory include      更新时间:2023-10-16

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

文件夹层次结构如下所示:

  • 一个
    • CMakeLists.txt + headers + src
  • L
    • CMakeLists.txt + headers + src
    • 子升
      • 标头 + SRC 文件

现在,就包含目录而言,我知道我需要在L/CMakeLists.txt/include_directories()中指定subL,因此 L 中的其他文件只需使用"mySubLHeaderFile.h"或#include#include即可引用包含文件。

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

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

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

是的,这是 CMakeinclude_directories命令的标准行为。 如果希望属性传播到依赖项,请使用版本 3 中成为标准的target_include_directories命令。 具体而言,具有客户端代码所需的标头的位置应位于"PUBLIC"或"INTERFACE"部分中。 如果 SubL 还需要在此处包含标头,请使用PUBLIC。 查看用于将属性传播到依赖项的整个target_*命令系列。