私は非常に単純なプロジェクト構造を持っていますが、CMake でコンパイルできません。CMake やチュートリアルに関するドキュメントを読もうとしましたが、うまくいきません。
同様の質問がありますが、答えが示唆することを試しても、うまくいきません。
ここで私の完全なコードを見ることができます
ただし、関連する CMakeList は次のとおりです。
ルート レベル:
cmake_minimum_required(VERSION 3.5)
find_package(Catch2 REQUIRED)
project(majorityQueries LANGUAGES CXX VERSION 0.0.1)
include_directories(include)
add_subdirectory(src)
add_subdirectory(tests)
file(GLOB SOURCES "*.cpp")
ソース:
add_library(fact factorial.cpp)
テスト:
add_executable(test test_factorial.cpp)
target_link_libraries(test Catch2::Catch2)
しかし、基本的には、ヘッダー factorial.hpp (インクルード ディレクトリ内) を含む test_factorial.cpp ファイルがあるため、Factorial(int) 関数の存在を知っている必要がありますが、未定義と表示されます。
私が試しているのは:
cd build/
cmake ..
make
が機能することを期待していmake
ましたが、代わりに次のようになります。
Undefined symbols for architecture x86_64:
"Factorial(int)", referenced from:
____C_A_T_C_H____T_E_S_T____0() in test_factorial.cpp.o
"Catch::NameAndTags::NameAndTags(Catch::StringRef const&, Catch::StringRef const&)", referenced from:
___cxx_global_var_init in test_factorial.cpp.o
"Catch::StringMaker<int, void>::convert(int)", referenced from:
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > Catch::Detail::stringify<int>(int const&) in test_factorial.cpp.o (...)