我有一个第三方静态库,我想要添加到一个项目中,并且由于该库正在进行更新,我希望坚持在根目录中使用单个CMakeLists.txt (如果可能)-或者至少在每次更新该库时都需要最少的自定义设置。
假设我的文件结构是这样的:
├── include
│ └── my_api
│ ├── some
│ │ └── long
│ │ └── path
│ │ └── include
│ │ ├── header1.h
│ │ └── header2.h
│ └── other
│ └── very
│ └── long
│ └── path
│ └── include
│ ├── header3.h
│ └── header4.h
├── lib
│ └── libmy_api.a
├── CMakeLists.txt
└── main.cpp
我遵循了无数的教程,但是当我在main.cpp中包含其中一个头文件时,CMake或Make都不能构建,或者我得到了“没有这样的文件或目录”。
我绝不是一个CMake超级用户,我甚至不确定在根目录中只有一个CMakeLists.txt来处理所有事情是否可能,或者这是否是一个好的实践。
更复杂的是,header1.h依赖于header3.h,使用以下路径:
#include "other/very/long/path/include/header3.h"
感谢所有的帮助--谢谢!
发布于 2021-09-29 07:26:54
包含目录由include_directories(...)
或target_include_directories(...)
命令添加。您需要将路径添加到包含您在标头中使用的相对路径的include目录。
您可以使用类似于add_library(name STATIC IMPORTED)
的命令添加库。然后通过set_target_properties(name PROPERTIES IMPORTED LOCATION some/path/lib.a)
添加位置。然后,您可以像往常一样将其链接到您的目标。
供参考:
https://stackoverflow.com/questions/69371876
复制相似问题