我不明白我需要做什么来使用位于/ usr / include中的库。
例如:我想使用位于/ usr / include / json中的json library。
在我的项目&#39; main.cpp&#39;我做#include <json/json.h>
。
我没有得到任何错误但是当我开始使用库中的函数时,我得到未定义的引用错误。我有多个库的这个问题,我不知道该做什么我在谷歌搜索但我只是遇到了模糊的答案。
我非常确定我需要在CMakeLists.txt文件中执行某些操作,但我不知道是什么。
答案 0 :(得分:5)
/usr/include
可以包含。但是当您包含外部库时,必须将其链接到目标。如果您使用cmake
,可以按照以下步骤操作:将以下行添加到您的CMakeLists.txt:
target_link_libraries(your_target_name your_library_name)
例如,在我的机器(Fedora 21)上,jsoncpp包名为jsoncpp
,而include
文件位于/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)
并且一切正常。