如何在 #include 的标头名称之前具有库名称

How to have library name preceding header name on a #include?

本文关键字:#include      更新时间:2023-10-16

我正在使用cmake编译具有以下结构的项目:

  • 利巴
    • 公司
    • 来源
  • LibB
    • 公司
    • 来源
  • 主.cpp

我在每个 LibX、每个 src 和根文件夹上都有 CMakeList。

我的项目正在按预期编译和工作。但我想将标题包括为:包括"{LibX}/{header}.h",而不仅仅是"{header}.h",或者不要将绝对/相对路径放在标题中。

由于我在 CMakeList 中设置了所有包含目录,因此我可以简单地包含一个带有其名称的标头,但这并不是真正的最佳解决方案。

例如,我的main.cpp依赖于LibA和LibB,而LibA依赖于LibB,这是一个数学库。最好知道我每次都从哪个库包含一个标题。

谢谢

Root/LibA/inc/ LibA /MyHeaderFileFromA.h

#include <LibA/MyHeaderFileFromA.h>

给你

将评论提升为答案,以便其他人更容易找到:

#include需要匹配路径。您可以在 Root 下创建一个额外的文件夹,称为 includes ,其中包含指向LibA/inc(调用链接LibA)和LibB/inc(调用链接LibB)的软(或硬)链接。然后将Root/includes设置为搜索头文件的路径之一。

  • 利巴
    • 公司
    • 来源
  • LibB
    • 公司
    • 来源
  • 包括
      LibA
    • (链接到 Root/LibA/inc)
    • LibB
    • (链接到 Root/LibB/inc)
  • 主.cpp