1
我想在cmake和gcc(使用Ubuntu)的设置中加载YAML数据到C++,但是我得到一个我无法解决的错误。yaml-cpp未定义的参考与CMake
到目前为止,我已经做了以下内容:
克隆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库。但我无法解决这个问题。
这指出我在正确的方向。我运行'make'而不是'make install'。 – David
对于那些遇到同样问题的人,在'make install'之后,你还必须使用'target_link_libraries(YAML_TEST yaml-cpp)'链接cmake中的yaml-cpp' – David