以下にリンクされている 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 );
}
この 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 ジェネレーターによって生成されました。
編集: エラー メッセージの最初の数行を追加しました。
失敗しました: 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-implib,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): 最初にここで定義