mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-22 21:36:11 +01:00
Add major changes and their motivation to v2 -> v3 migration docs
Closes #2135
This commit is contained in:
parent
1ecc79bb56
commit
02e5951f11
@ -1,12 +1,34 @@
|
|||||||
<a id="top"></a>
|
<a id="top"></a>
|
||||||
# Changes overview
|
|
||||||
- Catch2 now suggests statically compiled library as its distribution model.
|
|
||||||
- Functionality is split into multiple header files.
|
|
||||||
- ...
|
|
||||||
|
|
||||||
# Migrating from v2 to v3
|
# Migrating from v2 to v3
|
||||||
|
|
||||||
If you want to migrate to v3, there are two basic approaches to do so.
|
v3 is the next major version of Catch2 and brings three significant changes:
|
||||||
|
* Catch2 is now split into multiple headers
|
||||||
|
* Catch2 is now compiled as a static library
|
||||||
|
* C++14 is the minimum required C++ version
|
||||||
|
|
||||||
|
There are many reasons why we decided to go from the old single-header
|
||||||
|
distribution model to a more standard library distribution model. The
|
||||||
|
big one is compile-time performance, but moving over to a split header
|
||||||
|
distribution model also improves the future maintainability and
|
||||||
|
extendability of the codebase. For example v3 adds a new kind of matchers
|
||||||
|
without impacting the compilation times of users that do not use matchers
|
||||||
|
in their tests. The new model is also more friendly towards package
|
||||||
|
managers, such as vcpkg and Conan.
|
||||||
|
|
||||||
|
The result of this move is a significant improvement in compilation
|
||||||
|
times, e.g. the inclusion overhead of Catch2 in the common case has been
|
||||||
|
reduced by roughly 80%. The improved ease of maintenance also led to
|
||||||
|
various runtime performance improvements and the introduction of new features.
|
||||||
|
For details, look at [the release notes of 3.0.1](release-notes.md#301).
|
||||||
|
|
||||||
|
_Note that we still provide one header + one TU distribution but do
|
||||||
|
not consider it the primarily supported option. You should also expect
|
||||||
|
that the compilation times will be worse if you use this option._
|
||||||
|
|
||||||
|
|
||||||
|
## How to migrate projects from v2 to v3
|
||||||
|
|
||||||
|
To migrate to v3, there are two basic approaches to do so.
|
||||||
|
|
||||||
1. Use `catch_amalgamated.hpp` and `catch_amalgamated.cpp`.
|
1. Use `catch_amalgamated.hpp` and `catch_amalgamated.cpp`.
|
||||||
2. Build Catch2 as a proper (static) library, and move to piecewise headers
|
2. Build Catch2 as a proper (static) library, and move to piecewise headers
|
||||||
|
Loading…
Reference in New Issue
Block a user