<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/docs/cmake-integration.md, branch v3.15.3</title>
<subtitle>Progmasoft Catch3: an independently maintained C++17 test framework with a parallel runner, property checks, snapshots and structured results.</subtitle>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/'/>
<entry>
<title>Document that DISCOVERY_MODE PRE_TEST should be used with catch_discover_tests when used with XCode.</title>
<updated>2026-07-22T18:50:17+00:00</updated>
<author>
<name>Phil Nash</name>
</author>
<published>2026-07-10T15:42:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=eb431764b4cb9b6fa2296a034b4231064f8e464e'/>
<id>eb431764b4cb9b6fa2296a034b4231064f8e464e</id>
<content type='text'>
This addresses https://github.com/catchorg/Catch2/issues/2411 by making the "workaround" the official approach and is consistent with how gtest and cmake deal with the same situation.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This addresses https://github.com/catchorg/Catch2/issues/2411 by making the "workaround" the official approach and is consistent with how gtest and cmake deal with the same situation.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use latest release in docs</title>
<updated>2025-06-15T19:05:41+00:00</updated>
<author>
<name>Chris Thrasher</name>
</author>
<published>2025-06-15T19:05:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=ac207fc90fcc6e7c5facde215128c41ff6f1a5ec'/>
<id>ac207fc90fcc6e7c5facde215128c41ff6f1a5ec</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Downgrade required CMake to 3.16</title>
<updated>2025-01-05T22:45:00+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-01-05T22:19:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=232e893785553796b2016b4440a7f3776ed450a0'/>
<id>232e893785553796b2016b4440a7f3776ed450a0</id>
<content type='text'>
We still want to build VS 2017 through AppVeyor, and those images
have CMake 3.16.2 installed. We could install newer CMake as part
of the build, but since we don't use newer CMake features yet, this
is simpler.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We still want to build VS 2017 through AppVeyor, and those images
have CMake 3.16.2 installed. We could install newer CMake as part
of the build, but since we don't use newer CMake features yet, this
is simpler.
</pre>
</div>
</content>
</entry>
<entry>
<title>Support adding test tags as CTest labels in catch_discover_tests</title>
<updated>2025-01-05T19:02:00+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-01-03T09:30:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=7d7b2f89f24cbd277f6eb6912705e5e13c68a3c7'/>
<id>7d7b2f89f24cbd277f6eb6912705e5e13c68a3c7</id>
<content type='text'>
We also bump the minimum CMake version to 3.20 as per #2943
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We also bump the minimum CMake version to 3.20 as per #2943
</pre>
</div>
</content>
</entry>
<entry>
<title>TEST_CASE_PERSISTENT_FIXTURE: A new fixture macro for allowing persistent fixtures throughout a TEST_CASE (#2885)</title>
<updated>2024-08-05T15:01:41+00:00</updated>
<author>
<name>Keith Stockdale</name>
</author>
<published>2024-08-05T15:01:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=f7cd0ba0511b61592e70f07533d7ea30a8a5395d'/>
<id>f7cd0ba0511b61592e70f07533d7ea30a8a5395d</id>
<content type='text'>
This PR introduces a new `TEST_CASE` macro called `TEST_CASE_PERSISTENT_FIXTURE`. `TEST_CASE_PERSISTENT_FIXTURE` offers the same functionality as `TEST_CASE_METHOD` except for one difference. The object on which the test method is invoked is only created once for all invocations of the test case. The object is created just after the `testCaseStarting` event is broadcast and the object is destroyed just before the `testCaseEnding` event is broadcast.

The main motivation for this new functionality is to allow `TEST_CASE`s to do expensive setup and teardown once per `TEST_CASE`, without having to resort to abusing event listeners or static function variables with manual initialization.


Implements #1602

---------

Co-authored-by: Martin Hořeňovský &lt;martin.horenovsky@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This PR introduces a new `TEST_CASE` macro called `TEST_CASE_PERSISTENT_FIXTURE`. `TEST_CASE_PERSISTENT_FIXTURE` offers the same functionality as `TEST_CASE_METHOD` except for one difference. The object on which the test method is invoked is only created once for all invocations of the test case. The object is created just after the `testCaseStarting` event is broadcast and the object is destroyed just before the `testCaseEnding` event is broadcast.

The main motivation for this new functionality is to allow `TEST_CASE`s to do expensive setup and teardown once per `TEST_CASE`, without having to resort to abusing event listeners or static function variables with manual initialization.


Implements #1602

---------

Co-authored-by: Martin Hořeňovský &lt;martin.horenovsky@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Update CMake build instructions for current CMake version</title>
<updated>2024-02-19T14:02:08+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2024-02-08T21:05:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=82e9b9b5f2b62f5eb7b0381d65e69da2b974100b'/>
<id>82e9b9b5f2b62f5eb7b0381d65e69da2b974100b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Bazel instructions to integration docs (#2812)</title>
<updated>2024-02-16T15:58:09+00:00</updated>
<author>
<name>Fædon Jóhannes</name>
</author>
<published>2024-02-16T15:58:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=3157d6bbf163c8c10534ef6e0d8a834d20b3660a'/>
<id>3157d6bbf163c8c10534ef6e0d8a834d20b3660a</id>
<content type='text'>

Co-authored-by: Fædon Jóhannes Sinis &lt;fs@treble.tech&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>

Co-authored-by: Fædon Jóhannes Sinis &lt;fs@treble.tech&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Fix minor typos in documentation (#2769)</title>
<updated>2023-12-10T21:01:13+00:00</updated>
<author>
<name>Blake-Madden</name>
</author>
<published>2023-12-10T21:01:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=4ab0af8bafe3d5cb53bea3c2a91cb410a1c22afc'/>
<id>4ab0af8bafe3d5cb53bea3c2a91cb410a1c22afc</id>
<content type='text'>

Co-authored-by: Martin Hořeňovský &lt;martin.horenovsky@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>

Co-authored-by: Martin Hořeňovský &lt;martin.horenovsky@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>lifted suggested version</title>
<updated>2023-11-14T16:10:31+00:00</updated>
<author>
<name>Gerald Senarclens de Grancy</name>
</author>
<published>2023-11-10T11:45:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=2c68a0d05f4fa8fb79cd43824f69568eb3954d4c'/>
<id>2c68a0d05f4fa8fb79cd43824f69568eb3954d4c</id>
<content type='text'>
Did this, because with 3.0.1, the files
- catch_xmlwriter.cpp
- catch_string_manip.hpp
- catch_test_case_info.hpp

were missing

This led to some obvious and some obscure compile errors when compiling
with g++ 13.2.0 (std c++17 or c++20)
One of these errors being "Elaborated-type-specifier for a scoped enum
must not use the ‘class’ keyword"

Since this is a rather bad experience and debugging it is
time-consuming, I suggest to simply boost the recommended version in the
snippet which is likely copied by new Catch2 users
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Did this, because with 3.0.1, the files
- catch_xmlwriter.cpp
- catch_string_manip.hpp
- catch_test_case_info.hpp

were missing

This led to some obvious and some obscure compile errors when compiling
with g++ 13.2.0 (std c++17 or c++20)
One of these errors being "Elaborated-type-specifier for a scoped enum
must not use the ‘class’ keyword"

Since this is a rather bad experience and debugging it is
time-consuming, I suggest to simply boost the recommended version in the
snippet which is likely copied by new Catch2 users
</pre>
</div>
</content>
</entry>
<entry>
<title>Catch.cmake: Add new DISCOVERY_MODE option to catch_discover_tests</title>
<updated>2023-04-19T21:51:42+00:00</updated>
<author>
<name>Holger Kaelberer</name>
</author>
<published>2023-04-11T07:50:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=aad926baf87bb0121afc07b100e61f2b344ce156'/>
<id>aad926baf87bb0121afc07b100e61f2b344ce156</id>
<content type='text'>
Introducing a new DISCOVERY_MODE mode option, which provides greater
control over when catch_discover_tests perforsm test discovery.

It has two supported modes:
* POST_BUILD: The default behavior, which adds a POST_BUILD command
  to perform test discovery after the test has been built as was
  always done so far.

* PRE_TEST: New mode, which delays test discovery until test execution.
  The generated include file generates the appropriate CTest files at
  runtime and regenerates the CTest files when the executable is
  updated.
  This mode can be used in build-environments that don't allow for
  executing the linked binaries at build-time (like in a
  cross-compilation environment).

DISCOVERY_MODE can be controlled in two ways:
1. Setting the DISCOVERY_MODE when calling catch_discover_tests.

2. Setting the global CMAKE_CATCH_DISCOVER_TESTS_DISCOVERY_MODE prior
   to calling gtest_discover_tests.

Closes #2493
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Introducing a new DISCOVERY_MODE mode option, which provides greater
control over when catch_discover_tests perforsm test discovery.

It has two supported modes:
* POST_BUILD: The default behavior, which adds a POST_BUILD command
  to perform test discovery after the test has been built as was
  always done so far.

* PRE_TEST: New mode, which delays test discovery until test execution.
  The generated include file generates the appropriate CTest files at
  runtime and regenerates the CTest files when the executable is
  updated.
  This mode can be used in build-environments that don't allow for
  executing the linked binaries at build-time (like in a
  cross-compilation environment).

DISCOVERY_MODE can be controlled in two ways:
1. Setting the DISCOVERY_MODE when calling catch_discover_tests.

2. Setting the global CMAKE_CATCH_DISCOVER_TESTS_DISCOVERY_MODE prior
   to calling gtest_discover_tests.

Closes #2493
</pre>
</div>
</content>
</entry>
</feed>
