0

私は非常に単純なプロジェクト構造を持っていますが、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 (...)
4

1 に答える 1