我的项目结构非常简单,无法使用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 (...)
答案 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)