В настоящее время я пытаюсь использовать среду тестирования Catch.Я использую cmake для создания своего проекта, и в настоящее время я просто объединяю все файлы .h и .c.В целях тестирования я вытащил свой фактический «основной» и заменил его на примерный пример фактора Catch.У меня есть два файла:
// testmain.cpp
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
и
//test.cpp
#include "catch2/catch.hpp"
int Factorial( int number ) {
return number <= 1 ? number : Factorial( number - 1 ) * number; // fail
// return number <= 1 ? 1 : Factorial( number - 1 ) * number; // pass
}
TEST_CASE( "Factorial of 0 is 1 (fail)", "[single-file]" ) {
REQUIRE( Factorial(0) == 1 );
}
TEST_CASE( "Factorials of 1 and higher are computed (pass)", "[single-file]" ) {
REQUIRE( Factorial(1) == 1 );
REQUIRE( Factorial(2) == 2 );
REQUIRE( Factorial(3) == 6 );
REQUIRE( Factorial(10) == 3628800 );
}
Теперь происходит то, что он тратит 3 секунды на сборку и 1 минуту на связывание.После того, как все ссылки (1+ минут), я получаю результаты теста.Я следовал ниже обоим учебным пособиям, в которых упоминается, что эти два файла разделены.
Я прочитал учебник по Catch: https://github.com/catchorg/Catch2/blob/master/docs/tutorial.md
и
вики-страница "медленной компиляции":https://github.com/catchorg/Catch2/blob/master/docs/slow-compiles.md
Я не совсем уверен, почему связь занимает так много времени.Кто-нибудь сталкивался с подобными проблемами?
обновление:
Дополнительная информация о моей среде:
cmake 3.14.0-rc1
г ++ 8.1.0