如何在Cmake/Kdevelop中使用/包含库

Zer*_*ero 3 c++ kdevelop cmake

我不明白我需要做什么才能使用位于/ usr/include中的库.

例如:我想使用位于/ usr/include/json中的json库.在我的项目'main.cpp'中我做到了#include <json/json.h>.

我没有得到任何错误,但当我开始使用库中的函数时,我得到未定义的引用错误.我有多个库的这个问题,我不知道该做什么我在谷歌搜索但我只遇到了模糊的答案.

我很确定我需要在CMakeLists.txt文件中做一些事情,但我不知道是什么.

use*_*083 5

/usr/include默认情况下可以包含.但是当您包含外部库时,必须将其链接到目标.如果您正在使用cmake它,可以按如下方式完成:将以下行添加到您的CMakeLists.txt:

target_link_libraries(your_target_name your_library_name)
Run Code Online (Sandbox Code Playgroud)

例如,在我的机器(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;
}
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt

add_executable(test
test.cpp
)

target_link_libraries(test jsoncpp)
Run Code Online (Sandbox Code Playgroud)

一切顺利.

  • 我的坏,我将github中的文件复制到了usr/include.现在我下载了正确的软件包`libjsoncpp-dev`,它现在正在运行!谢谢! (2认同)