捕获单元测试库链接错误
Catch unit test library linking error
我正在尝试使用下面链接的CATCH单元测试套件。https://github.com/philsquared/Catch
然而,我不能成功地使它正确。main.cpp和test.cpp分别如下:
//main.cpp
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
//test.cpp
#include "catch.hpp"
TEST_CASE("TESTTest", "") {
CHECK(1 != 2 );
}
当这两个文件位于同一个文件夹中时,我可以得到想要的结果。但是,我将test.cpp
移动到名为test
的子目录中。它不再像预期的那样工作,而是产生链接错误。
我的cmake设置描述如下。
project(catchTest)
cmake_minimum_required(VERSION 2.8)
file(GLOB_RECURSE INCS "./*.cpp")
add_executable(${PROJECT_NAME} main.cpp ${INCS})
include_directories(.)
添加 file(GLOB_RECURSE INCS "./*.cpp")
以包含子目录下的所有cpp源文件。和include_directories(.)
,让他们知道catch.hpp
的定义。
我很清楚我做错了什么事,但我不知道如何解决它。请告诉我如何解决这个问题。
在Windows上运行,使用mingw gcc-4.9.1编译,由cmake ninja生成器生成。
编辑:我添加了前几行错误信息。
FAILED: cmd.exe/c cd .exe,,C: MinGW bin g++ . exe CMakeFiles/catchTest.dir/main.cpp。obj CMakeFiles/catchTest.dir/main.cpp。obj CMakeFiles/catchTest.dir/测试/testTest.cpp。-Wl,——out-implib,libcatchTest.dll。a -Wl,——major-image-version,0,——minor-image-version,0 -lkernel -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 &&cd。CMakeFiles/catchTest.dir/main.cpp.obj:main.cpp:(.text+0x0):多个' Catch::getResultCapture()'的定义
CMakeFiles/catchTest.dir/main.cpp.obj:main.cpp:(.text+0x0):此处首次定义
你的CMakeLists.txt是错误的,它包含main两次。如果你像这样修改add_executable语句,它会为我工作:
add_executable(${PROJECT_NAME} main.cpp test.cpp )
希望对你有帮助。
金必须包含正确的catch.hpp。在存储库中有两个名称相同的不同包含:一个In include,另一个名为single_include。请确保您使用的是single_include
当您看到诸如catch之类的头文件库链接错误时,这意味着您设置的包含路径不正确。
使用single_include
而不是include
- 静态数据成员的问题-修复链接错误会导致编译器错误
- Visual Studio mkl_link_tool.exe链接错误
- C++ 实现模板单例类时出现链接错误
- 使用类模板的方法链接错误
- MySQL C++连接器链接错误
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 运行 C++ 单元测试时LNK2005链接错误
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 链接错误,包括我创建的相同头文件 - C++
- 在Embarcadero C++ Builder中生成的DLL未解决的外部链接错误
- 使用标头保护的多个定义链接错误
- 链接错误:未定义对 stdscr 和 wgetch 的引用
- 使用 Vivek 的 Vcam / 捕获源过滤器构建/链接错误
- 升压program_options中的链接错误
- 使用 g++ 预处理器进行替换会导致链接错误
- 在调试配置中编译工作正常,但发布会给出链接错误
- 相邻矩阵设置链接错误
- 包含常量变量并包含在多个文件中的标头的链接错误
- C++链接错误,我理解但无法解决
- 是什么导致macOS Mojave上的GoogleTest链接错误