使用CMake的yaml-cpp未定义引用

时间:2017-01-30 07:14:27

标签: c++ yaml-cpp

我正在尝试使用cmake和gcc(使用Ubuntu)在设置中将YAML数据加载到c ++,但是我收到了一个无法解决的错误。

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

克隆yaml-cpp repo,创建build,使用cmake ..make构建库并将文件从Downloads/yaml-cpp/build/include/yaml-cpp/复制到{{1} }。

此外,我有一个最小的工作示例,可以按如下方式重现错误:

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

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

#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;
}

但是,如果我尝试编译项目,我会收到错误

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

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

1 个答案:

答案 0 :(得分:1)

该行

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

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