我正在尝试使用下面链接的 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 generator 生成。
编辑:我添加了前几行错误消息。
失败: cmd.exe /c cd 。&& C:\MinGW\bin\g++.exe CMakeFiles/catchTest.dir/main.cpp.obj CMakeFiles/catchTest.dir/main.cpp.obj CMakeFiles/catchTest.dir/test/testTest.cpp.obj -o catchTest. exe -Wl,--out-imlib,libcatchTest.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lkernel32 -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):首先定义在这里