【发布时间】:2014-10-12 06:47:46
【问题描述】:
我正在尝试使用下面链接的 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):这里首先定义
【问题讨论】:
-
这似乎是一个多重定义符号的问题,例如:'Catch::getResultCapture() 的多重定义'
-
@KimKulling 没错。但是,我不知道内部捕获,因此不知道如何使其正确。
标签: c++ unit-testing catch-unit-test