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

How to use / include libraries in Cmake / Kdevelop

本文关键字:包含库 Kdevelop Cmake      更新时间:2023-10-16

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

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

我没有得到任何erros,但当我开始使用库中的函数时,我会得到未定义的引用错误。我对多个库有这个问题,我不知道该怎么办。我在谷歌上搜索了一下,但只找到了模糊的答案。

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

默认情况下,可以访问

/usr/include进行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)

一切都很好。