2017-01-30 23 views
1

cmakeとgcc(Ubuntuを使用)を使ってYAML-dataをC++にロードしようとしていますが、解決できないというエラーが発生します。yaml-cpp CMakeで定義されていない参照

これまでのところ、私は次のことを行っている:

を、yaml-cppレポをクローンbuildを作成し、ライブラリーを構築するためにcmake ..makeを使用してDownloads/yaml-cpp/build/include/yaml-cpp/からmyproject/include/yaml-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ファイルを持っている:

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

CMakeLists.txt (test.yaml)です。

私はプロジェクトをコンパイルしようとした場合

はしかし、私は、プロジェクトが正常にYAML-CPPライブラリが見つからないと思います

/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&)' ... 

エラーが発生します。しかし、私はこれを解決することができません。

答えて

1

ライン

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

はYAML-CPPを構成するシンボルのいずれかを持っていないだけでそのヘッダファイルを、使用してライブラリを作成しようとします。ライブラリをビルドしてインストールする必要があります。

+0

これは正しい方向に私を指摘しました。 'make install'の代わりに' make'を実行しました。 – David

+0

私が持っていたのと同じ問題を抱えている人にとっては、 'make install'の後に、' target_link_libraries(YAML_TEST yaml-cpp) 'を使ってcmakeにyaml-cppをリンクする必要もあります – David

関連する問題