我不明白我需要做什么才能使用位于/usr/include中的库.
例如:我想使用位于/usr/include / json中的json library.
在我的项目’main.cpp’中,我做#include< json / json.h>.
我没有得到任何错误,但当我开始使用库中的函数时,我得到未定义的引用错误.我有多个库的这个问题,我不知道该做什么我在谷歌搜索但我只遇到了模糊的答案.
我很确定我需要在CMakeLists.txt文件中做一些事情,但我不知道是什么.
解决方法:
默认情况下,/usr/include可以包含.但是当您包含外部库时,必须将其链接到目标.如果您使用的是cmake,可以按照以下步骤操作:将以下行添加到CMakeLists.txt:
target_link_libraries(your_target_name your_library_name)
例如,在我的机器(Fedora 21)上,jsoncpp包被命名为jsoncpp,它的包含文件位于/usr/include / jsoncpp / json中.所以我像这样创建test.cpp
#include <jsoncpp/json/json.h>
#include <iostream>
int main(int, char**)
{
Json::Value val(42);
Json::StyledStreamWriter sw;
sw.write(std::cout, val);
return 0;
}
和CMakeLists.txt
add_executable(test
test.cpp
)
target_link_libraries(test jsoncpp)
一切顺利.