c++ - 带有 CMake 的 yaml-cpp undefined reference

标签 c++ yaml-cpp

我试图在使用 cmake 和 gcc(使用 Ubuntu)的设置中将 YAML 数据加载到 C++,但我收到无法解决的错误。

到目前为止,我已经完成了以下工作:

克隆 yaml-cpp 仓库,创建 build,使用 cmake ..make 构建库并将文件从 Downloads/yaml-cpp/build/include/yaml-cpp/ 复制到 myproject/include/yaml-cpp/

此外,我有一个重现错误的最小工作示例,如下所示:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.6)
project(YAML_TEST)

set(CMAKE_CXX_STANDARD 11)
include_directories("include")

add_library(YAML_LIB include/yaml-cpp/yaml.h )
set_target_properties(YAML_LIB PROPERTIES LINKER_LANGUAGE CXX)

set(SOURCE_FILES main.cpp)
add_executable(YAML_TEST ${SOURCE_FILES})
target_link_libraries(YAML_TEST YAML_LIB)

main.cpp:

#include <iostream>
#include <string.h>
#include "include/yaml-cpp/yaml.h"

int main() {
    YAML::Node config = YAML::LoadFile("test.yaml");
    std::cout << "tag: " << config["tag"].as<std::string>() << "\n";

    return 0;
}

我还有一个小的 yaml 文件 (test.yaml),其中包含:

tag: "This is a text"
category:
  anothertag: 123

但是,如果我尝试编译该项目,则会出现错误

/home/david/Desktop/myproject/main.cpp:6: undefined reference to `YAML::LoadFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' ...

我猜项目没有正确找到 yaml-cpp 库。但我无法解决这个问题。

最佳答案

线

add_library(YAML_LIB include/yaml-cpp/yaml.h )

将尝试仅使用该头文件创建一个库,该头文件不会包含构成 yaml-cpp 的任何符号。您需要构建库并安装它。

关于c++ - 带有 CMake 的 yaml-cpp undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41930633/

相关文章:

c++ - 在 boost::signals 中, 'slot_type' 和 'slot_function_type' 有什么区别?

yaml-cpp - 使用YAML-CPP将YAML发射器内容保存到文件中

yaml - 在 yaml-cpp 中保存节点引用

c++ - 使用带有新 API 的编号索引进行无效转换

c++ - 我可以获取标准库中定义的函数的地址吗?

c++ - ACE Reactor 在系统调用中断时退出

c++ - yaml-cpp、YAML::Node 和模板运算符 >>

c++ - 使用 yaml-cpp 新 API 解析 yaml 文件 - 问题已修复

C++网络流

C++:value_type 与 make_pair,哪个更快用于 map 插入?