Snažím sa načítať YAML-data do c ++ v nastavení s cmake a gcc (pomocou Ubuntu), ale dostanem chybu, ktorú nemôžem vyriešiť.
Zatiaľ som urobil nasledovné:
klonovať yaml-cpp
repo, vytvorené build
, použité cmake ..
a make
vytvoriť knižnicu a skopírovať súbory z Downloads/yaml-cpp/build/include/yaml-cpp/
na myproject/include/yaml-cpp/
.
Okrem toho mám minimálny pracovný príklad, ktorý reprodukuje chybu nasledovne:
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;
}
A tiež mám malý súbor yaml (test.yaml), ktorý obsahuje:
tag: "This is a text"
category:
anothertag: 123
Ak sa však pokúsim kompilovať projekt, dostanem chybu
/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&)" ...
Myslím si, že projekt nenájde správne knižnicu yaml-cpp.
odpovede:
1 pre odpoveď č. 1Čiara
add_library(YAML_LIB include/yaml-cpp/yaml.h )
sa pokúsia vytvoriť knižnicu len pomocou tohto hlavičkového súboru, ktorý nemá žiadny zo symbolov, ktoré tvoria yaml-cpp. Musíte vytvoriť knižnicu a nainštalovať ju.