Search code examples
c++unit-testingtestingcatch2

Cannot compile file using catch2 CATCH_CONFIG_MAIN


I've started out learning how to use Catch2 for testing my C++ code and am trying to set up a simple test.

My folder structure consists of three files all in the same folder:

catch.cpp //this is the catch_amalgamated.cpp file from GitHub
catch.hpp //this is the catch_amalgamated.hpp file from GitHub
test.cpp  //this is my test file

All I have written in test.cpp is:

#define CATCH_CONFIG_MAIN
#include "catch.hpp"

When I try to compile test.cpp I get the following error which I think indicates that there is no main() function found(?):

C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x2e): undefined reference to `WinMain'
collect2.exe: error: ld returned 1 exit status

When I add a nominal main() function, the file compiles successfully, but as I understand it #define CATCH_CONFIG_MAIN is supposed to create the main() function for you so something clearly isn't working.

Can anyone shed any light on this?


Solution

  • The error was occurring because the default branch that google takes you to is the development branch of catch2, so I was using version 3 files and following version 2 documentation (as it has not been updated yet). Once I downloaded the v.2 file everything started working fine.