mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-30 01:03:30 +01:00
parent
98d4c49d1c
commit
9796a77a37
@ -55,6 +55,17 @@ Because of the incremental nature of Catch's test suites and ability to run spec
|
|||||||
|
|
||||||
## Low-level tools
|
## Low-level tools
|
||||||
|
|
||||||
|
### Precompiled headers (PCHs)
|
||||||
|
|
||||||
|
Catch offers prototypal support for being included in precompiled headers, but because of its single-header nature it does need some actions by the user:
|
||||||
|
* The precompiled header needs to define `CATCH_CONFIG_ALL_PARTS`
|
||||||
|
* The implementation file needs to
|
||||||
|
* undefine `TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED`
|
||||||
|
* define `CATCH_CONFIG_IMPL_ONLY`
|
||||||
|
* define `CATCH_CONFIG_MAIN` or `CATCH_CONFIG_RUNNER`
|
||||||
|
* include "catch.hpp" again
|
||||||
|
|
||||||
|
|
||||||
### CMake
|
### CMake
|
||||||
|
|
||||||
In general we recommend "vendoring" Catch's single-include releases inside your own repository. If you do this, the following example shows a minimal CMake project:
|
In general we recommend "vendoring" Catch's single-include releases inside your own repository. If you do this, the following example shows a minimal CMake project:
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#ifndef TWOBLUECUBES_CATCH_HPP_INCLUDED
|
#ifndef TWOBLUECUBES_CATCH_HPP_INCLUDED
|
||||||
#define TWOBLUECUBES_CATCH_HPP_INCLUDED
|
#define TWOBLUECUBES_CATCH_HPP_INCLUDED
|
||||||
|
|
||||||
|
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
# pragma clang system_header
|
# pragma clang system_header
|
||||||
#elif defined __GNUC__
|
#elif defined __GNUC__
|
||||||
@ -19,12 +20,19 @@
|
|||||||
|
|
||||||
#if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER)
|
#if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER)
|
||||||
# define CATCH_IMPL
|
# define CATCH_IMPL
|
||||||
|
# define CATCH_CONFIG_ALL_PARTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// In the impl file, we want to have access to all parts of the headers
|
||||||
|
// Can also be used to sanely support PCHs
|
||||||
|
#if defined(CATCH_CONFIG_ALL_PARTS)
|
||||||
# define CATCH_CONFIG_EXTERNAL_INTERFACES
|
# define CATCH_CONFIG_EXTERNAL_INTERFACES
|
||||||
# if defined(CATCH_CONFIG_DISABLE_MATCHERS)
|
# if defined(CATCH_CONFIG_DISABLE_MATCHERS)
|
||||||
# undef CATCH_CONFIG_DISABLE_MATCHERS
|
# undef CATCH_CONFIG_DISABLE_MATCHERS
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(CATCH_CONFIG_IMPL_ONLY)
|
||||||
#include "internal/catch_platform.h"
|
#include "internal/catch_platform.h"
|
||||||
|
|
||||||
#ifdef CATCH_IMPL
|
#ifdef CATCH_IMPL
|
||||||
@ -61,6 +69,8 @@
|
|||||||
#include "internal/catch_external_interfaces.h"
|
#include "internal/catch_external_interfaces.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif // ! CATCH_CONFIG_IMPL_ONLY
|
||||||
|
|
||||||
#ifdef CATCH_IMPL
|
#ifdef CATCH_IMPL
|
||||||
#include "internal/catch_impl.hpp"
|
#include "internal/catch_impl.hpp"
|
||||||
#endif
|
#endif
|
||||||
@ -69,6 +79,7 @@
|
|||||||
#include "internal/catch_default_main.hpp"
|
#include "internal/catch_default_main.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(CATCH_CONFIG_IMPL_ONLY)
|
||||||
|
|
||||||
#ifdef CLARA_CONFIG_MAIN_NOT_DEFINED
|
#ifdef CLARA_CONFIG_MAIN_NOT_DEFINED
|
||||||
# undef CLARA_CONFIG_MAIN
|
# undef CLARA_CONFIG_MAIN
|
||||||
@ -327,6 +338,8 @@ using Catch::Detail::Approx;
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif // ! CATCH_CONFIG_IMPL_ONLY
|
||||||
|
|
||||||
#include "internal/catch_reenable_warnings.h"
|
#include "internal/catch_reenable_warnings.h"
|
||||||
|
|
||||||
#endif // TWOBLUECUBES_CATCH_HPP_INCLUDED
|
#endif // TWOBLUECUBES_CATCH_HPP_INCLUDED
|
||||||
|
Loading…
Reference in New Issue
Block a user