У меня проблемы с запуском простого теста с catch2 с использованием CMake. Поскольку catch - это только заголовок, у меня сложилось впечатление, что его легко вставить в любой проект, поэтому я подумал, что просто включу его как обычный заголовочный файл.
Структура проекта:
-build
-external
-Catch2
catch2.hpp
CMakeLists.txt
tester.cpp
CMakeLists.txt:
cmake_minimum_required(VERSION 3.12)
project(Test VERSION 1.0.0)
include_directories(external)
enable_testing()
add_executable(tester tester.cpp)
add_test(Tester tester)
tester.cpp:
#define CATCH_CONFIG_MAIN
#include "Catch2\catch.hpp"
TEST_CASE( "1 is 1" ) {
REQUIRE( 1 == 1 );
}
Выход:
0% tests passed, 1 tests failed out of 1
Total Test time (real) = 0.03 sec
The following tests FAILED:
1 - Tester (Exit code 0xc0000139
)
Errors while running CTest
Очевидно, что тест должен пройти, но это не так. Поскольку я новичок как в области CMake, так и catch2, мне трудно определить проблему. Что я могу сказать наверняка, так это то, что catch.hpp
найден и нет ошибок компоновщика, он просто возвращает некоторый код ошибки.
Я оглянулся и нашел это:
Заголовок CMake из библиотеки не найден при реализации в контрольном примере
Но у него нет ответов, и у автора, похоже, нет такой же проблемы.
Вот как я собираю и запускаю тесты (стоящие в каталоге сборки):
cmake .. -G "MinGW Makefiles" && mingw32-make && ctest
Любая помощь оценивается:)