【发布时间】:2020-06-22 05:44:48
【问题描述】:
如果我有这个源代码树:
C:\app:
src:
CMakeLists.txt
main.cpp --> #include "acme/header_only_lib/api.h"
D:\3rdparty\acme\header_only_lib:
api.h --> #include "detail.h"
detail.h
不使用符号链接技巧,也不向 3rdparty 文件夹添加文件,如果我必须在 main.cpp 中保留 #include "acme/header_only_lib/api.h",我应该如何在 CMake 中指定包含目录,以便 api.h 可以看到 detail.h,没有添加D:\3rdparty\acme\header_only_lib的全局包含目录? header-only-lib 既不是可执行文件也不是库目标,我无法修改它的代码。我也不想通过添加D:\3rdparty\acme\header_only_lib 来污染我的全局包含目录,因为里面的文件名太常见了,很容易与其他库/未来代码发生冲突。
是否有一个 CMake 机制,我可以说:
仅对于D:\3rdparty\acme\header_only_lib\api.h,添加D:\3rdparty\acme\header_only_lib 作为包含目录?
【问题讨论】:
-
将
D:\3rdparty和D:\3rdparty\acme\header_only_lib添加为包含路径。 -
抱歉,我的问题不够具体:我试图通过全局引入 D:\3rdparty\acme\header_only_lib 来不污染全局包含,因为存在文件名冲突的真正问题.您是否知道某种指定“本地”包含(仅可见,header_only_lib 中的文件)而不是“全局”包含的方法?