无法使用cmake编译简单的项目结构(使用catch2库)

时间:2019-07-13 20:16:14

标签: c++ cmake catch2

我的项目结构非常简单,无法使用CMake进行编译。我试图阅读有关CMake的文档或教程,但无法正常工作。

有一个similar question,但是即使尝试答案提示我也无法正常工作。

您可以看到我的完整代码here

但是基本上我有一个test_factorial.cpp文件,该文件包含标头factorial.hpp(在include目录中),因此应该知道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 (...)

1 个答案:

答案 0 :(得分:0)

正如我在评论中所写的,将源文件test_main.cpp和库fact添加到./tests/CMakeLists.txt

add_executable(test test_main.cpp test_factorial.cpp)
target_link_libraries(test fact Catch2::Catch2)