CMake 包含非 cmake 库的第三方标头
CMake Include third party header for a non cmake library
我有一个这样的项目设置:
project
CMakeLists.txt
src
CMakeLists.txt
Mylib.cpp
thirdparty
somelib
include
header.h
我正在尝试将 header.h 包含在我的代码中,#include "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)
确保根据需要调整可见性(请参阅文档(。此外,如果您计划安装目标,则应使用如下所示的生成器表达式,以不同于构建期间使用的位置(尤其是 API 面向用户的标头(调整已安装标头的位置
target_include_directories(foo PUBLIC
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/thiirdpart/somelib/include/>
$<INSTALL_INTERFACE:include/thirdparty/somelib/include> # or whichever structure you choose
)
相关文章:
- 如何在两个列表中比较和获取非包含值
- 如何检查 int 变量是否包含合法(非陷阱表示)值?
- CMake 包含非 cmake 库的第三方标头
- C++将包含非人类可读数据的字符串转换为 200 双精度
- 如何在粒子(Spark)的本地构建中包含第三方库?
- VTBL 是否包含指向非虚函数的指针?
- 如何复制包含非原始类型的阵列
- 我想将指向 const 对象的指针放入包含非 const 指针的容器中.我有什么选择
- 将NetBeans配置为调试包含非标准库的C 程序
- 交换包含非一般可复制类型的“std::aligned_storage”实例-未定义的行为
- 在结构中,文件名可以包含非标准字符
- 这是在包含非唯一元素的未排序数组中选择第k个最大数的最快算法
- 符合标准的编译器是否可以拒绝包含非多态类型向下转换dynamic_cast代码
- 如何伪造包含非虚函数的C++类
- 写入包含非 ASCII 字符的字符串 - 仅当字符串是变量时才出错
- "char"之前应包含非限定 id
- 找出模型中包含非不透明纹理的Tris
- 我必须在c++中的类定义中包含非标准库吗?
- 如何确定字符串中是否包含非数字?
- 将包含非ascii字符的字节数组转换为字符串