/ / yaml-cpp nedefinovaný odkaz s CMake - c ++, yaml-cpp

yaml-cpp nedefinovaný odkaz s CMake-c ++, yaml-cpp

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.