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

时间:2016-03-31 09:26:50

标签: c++ cmake kdevelop

我不明白我需要做什么来使用位于/ usr / include中的库。

例如:我想使用位于/ usr / include / json中的json library。 在我的项目&#39; main.cpp&#39;我做#include <json/json.h>

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

我非常确定我需要在CMakeLists.txt文件中执行某些操作,但我不知道是什么。

1 个答案:

答案 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)

并且一切正常。