【发布时间】:2022-07-05 17:13:37
【问题描述】:
我想使用以下库 https://github.com/gmeuli/caterpillar
它的文档说它是一个仅包含标头的库,我应该“使用#include <caterpillar/caterpillar.h> 将它直接集成到我的源文件中”。它还依赖于其他一些库,我也需要直接使用其中的一个。
到目前为止,我已经完成了以下工作:
- 创建 cmake 项目以制作“可执行文件”(使用 vscode 扩展)
- 创建了一个“lib”文件夹,我在里面做了
git clone https://github.com/gmeuli/caterpillar
- 然后,我在我的 cmake 文件中做了
include_directories(lib)。 - 但
#include <caterpillar/caterpillar.h>在我的单数main.cpp文件中不太适用。
我使用了各种 CMake 函数,但它要么给出了关于 caterpillar/caterpillar.h 本身的错误“没有这样的文件或目录”,要么给出了“无法打开源文件...依赖于 caterpillar/caterpillar.h”,具体取决于关于我是如何弄乱 cmake 文件的。
供参考:
cat ~/project/main.cpp
#include <caterpillar/caterpillar.hpp>
#include <lorina/lorina.hpp> //how do I include this ? it's in the lib folder of caterpillar itself, or do I need to have a copy of it in my lib folder too
int main()
{
// stuff in lorina:: namespace
// stuff in caterpillar:: namespace
return 0;
}
cat ~/project/CMakeLists.txt
include_directories(lib)
//... rest is stuff like CXX standard, etc etc
树~/项目
main.cpp
lib/
caterpillar/
build/
cmake generated stuff
CMakeLists.txt
【问题讨论】:
-
大胆猜测将
#include <caterpillar/caterpillar.h>更改为#include <caterpillar.h>并对 CMake 进行必要的调整以使该代码正常工作。 -
当然,您真正应该做的是查阅该库的文档,看看他们希望您如何包含他们的头文件。
-
试过了,没用。但也许我做错了“对 CMake 的必要调整”。
-
@john,他们的文档说
#include <caterpillar/caterpillar.h>。使用此信息编辑问题 -
好吧,别说了。
标签: c++ linux cmake build header-only