【发布时间】:2018-09-09 20:51:31
【问题描述】:
我有一个这样的项目:
project
CMakeLists.txt
src
CMakeLists.txt
Mylib.cpp
thirdparty
somelib
include
header.h
我正在尝试使用 #include "header.h" 在我的代码中包含 header.h,但是预处理器找不到标头。
我已尝试在 src CMakeLists.txt 中使用 target_include_directories 添加第三方包含目录,但这无济于事。我已经尝试了thirdparty/somelib/include 和../thirdparty/somelib/include 作为路径。
如何正确获取包含路径上的标头?
【问题讨论】:
-
在
target_include_directories(foo PUBLIC ${CMAKE_SOURCE_DIR}/thirdparty/somelib/include)中使用项目树的顶级目录(又名根)很方便。如果这可行,并且您还安装了目标,您可能需要使用生成器表达式进行调整,但让我们一步一步来。 -
那行得通-我尝试过同样的事情,但已将包含的目录标记为 PRIVATE 并将其包含在我的公共标头中,这显然不起作用!谢谢!
-
好,我会把它转换成答案。
-
您可以将第三方库添加到您的项目中,作为仅标头库。这是一个完整的示例:mariobadr.com/creating-a-header-only-library-with-cmake.html