<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/CMake/catch2.pc.in, branch feature/cpp-tools</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>Give Catch3 its own build names and headers</title>
<updated>2026-10-24T23:37:35+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-24T23:37:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=126dc333564cb72b5115d9a9242d66694694b6d0'/>
<id>126dc333564cb72b5115d9a9242d66694694b6d0</id>
<content type='text'>
Catch2 compatibility means the API tests are written in: the macros, such
as TEST_CASE and REQUIRE, and the Catch:: namespace. It does not mean
Catch2's build names or header paths. find_package(Catch2) found Catch3,
and a project using both frameworks met two packages, two sets of targets,
two Catch.cmake modules and two catch2/ header trees with the same names.

Build names:
- CMake: project and package Catch3, targets Catch3::Catch3 and
  Catch3::Catch3WithMain, libraries Catch3 and Catch3Main, options
  CATCH3_*, lib/cmake/Catch3 with Catch3Config, and pkg-config catch3 and
  catch3-with-main. The version is Catch3's, 0.3.0, compatible within a
  minor version.
- The CMake scripts are Catch3.cmake (catch3_discover_tests),
  Catch3AddTests.cmake and Catch3ShardTests.cmake
  (catch3_add_sharded_tests); the helpers they define at ctest time have a
  catch3_ prefix. ParseAndAddCatchTests.cmake, deprecated upstream, is gone.
- Bazel //:catch3 and //:catch3_main, Meson catch3 and catch3-with-main
  (with override_dependency), Xmake catch3 and catch3_main, Premake Catch3
  and Catch3WithMain. Visual Studio projects get GUIDs of their own.
- The Progmasoft::Catch3 target and package are gone: property testing
  and snapshots are part of Catch3::Catch3. Their sources now build with
  the library's warning flags, so property failures are built field by
  field (no missing initializers) and the default property name is a
  thread-local pointer to the name its scope owns (no global destructor).

Headers: the engine moved from src/catch2 to src/Progmasoft/Catch3 with
Progmasoft names, so &lt;catch2/catch_test_macros.hpp&gt; is
&lt;Progmasoft/Catch3/TestMacros.hpp&gt;, &lt;catch2/matchers/catch_matchers_string.hpp&gt;
is &lt;Progmasoft/Catch3/Matchers/String.hpp&gt;, and interface headers are named
after their interface, such as Interfaces/IConfig.hpp. Include guards
became #pragma once. The installed headers go to include/Progmasoft.
src/Progmasoft/Context.cpp is StrategyContext.cpp, so no two sources share
a file name.

tools/scripts/upstreamFiles.txt lists the files that come from Catch2.
The license check expects BSL-1.0 on them and Progmasoft's header on the
rest of src/Progmasoft; the convenience-header check, the amalgamation
script and the surrogate tests take the engine's headers from it. The
amalgamated files are regenerated. The header-guard workflow checks for
#pragma once instead of checkguard.

Documents, the README and the release notes describe the new names.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Catch2 compatibility means the API tests are written in: the macros, such
as TEST_CASE and REQUIRE, and the Catch:: namespace. It does not mean
Catch2's build names or header paths. find_package(Catch2) found Catch3,
and a project using both frameworks met two packages, two sets of targets,
two Catch.cmake modules and two catch2/ header trees with the same names.

Build names:
- CMake: project and package Catch3, targets Catch3::Catch3 and
  Catch3::Catch3WithMain, libraries Catch3 and Catch3Main, options
  CATCH3_*, lib/cmake/Catch3 with Catch3Config, and pkg-config catch3 and
  catch3-with-main. The version is Catch3's, 0.3.0, compatible within a
  minor version.
- The CMake scripts are Catch3.cmake (catch3_discover_tests),
  Catch3AddTests.cmake and Catch3ShardTests.cmake
  (catch3_add_sharded_tests); the helpers they define at ctest time have a
  catch3_ prefix. ParseAndAddCatchTests.cmake, deprecated upstream, is gone.
- Bazel //:catch3 and //:catch3_main, Meson catch3 and catch3-with-main
  (with override_dependency), Xmake catch3 and catch3_main, Premake Catch3
  and Catch3WithMain. Visual Studio projects get GUIDs of their own.
- The Progmasoft::Catch3 target and package are gone: property testing
  and snapshots are part of Catch3::Catch3. Their sources now build with
  the library's warning flags, so property failures are built field by
  field (no missing initializers) and the default property name is a
  thread-local pointer to the name its scope owns (no global destructor).

Headers: the engine moved from src/catch2 to src/Progmasoft/Catch3 with
Progmasoft names, so &lt;catch2/catch_test_macros.hpp&gt; is
&lt;Progmasoft/Catch3/TestMacros.hpp&gt;, &lt;catch2/matchers/catch_matchers_string.hpp&gt;
is &lt;Progmasoft/Catch3/Matchers/String.hpp&gt;, and interface headers are named
after their interface, such as Interfaces/IConfig.hpp. Include guards
became #pragma once. The installed headers go to include/Progmasoft.
src/Progmasoft/Context.cpp is StrategyContext.cpp, so no two sources share
a file name.

tools/scripts/upstreamFiles.txt lists the files that come from Catch2.
The license check expects BSL-1.0 on them and Progmasoft's header on the
rest of src/Progmasoft; the convenience-header check, the amalgamation
script and the surrogate tests take the engine's headers from it. The
amalgamated files are regenerated. The header-guard workflow checks for
#pragma once instead of checkguard.

Documents, the README and the release notes describe the new names.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove what Catch2's maintainers left that is not ours</title>
<updated>2026-10-24T16:07:10+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-24T16:07:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=a2edf60b9f410d26485ac7c0492870a0905f9545'/>
<id>a2edf60b9f410d26485ac7c0492870a0905f9545</id>
<content type='text'>
Catch3 is maintained by Progmasoft, but the repository still carried
Catch2's funding links, its maintainer list and GPG keys, a Code of Conduct
contact at a Catch2 maintainer's address, its lists of users, its release
process and release scripts, its AppVeyor configuration and its logos.

- Removed FUNDING.yml, MAINTAINERS.md, appveyor.yml with the AppVeyor and
  OpenCppCoverage helpers, Catch2's user lists, why-catch, release process
  and deprecations pages, its two logos and the major/minor/patch release
  scripts. releaseCommon.py keeps only what the amalgamation reads.
- The Code of Conduct sends reports to support@progmasoft.com.
- contributing.md and release-notes.md are written for Catch3; Catch2's
  release history is linked upstream.
- CMake, pkg-config and Doxygen name Catch3 and its repository; the
  amalgamated files say which Catch3 version and which Catch2 engine they
  come from.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Catch3 is maintained by Progmasoft, but the repository still carried
Catch2's funding links, its maintainer list and GPG keys, a Code of Conduct
contact at a Catch2 maintainer's address, its lists of users, its release
process and release scripts, its AppVeyor configuration and its logos.

- Removed FUNDING.yml, MAINTAINERS.md, appveyor.yml with the AppVeyor and
  OpenCppCoverage helpers, Catch2's user lists, why-catch, release process
  and deprecations pages, its two logos and the major/minor/patch release
  scripts. releaseCommon.py keeps only what the amalgamation reads.
- The Code of Conduct sends reports to support@progmasoft.com.
- contributing.md and release-notes.md are written for Catch3; Catch2's
  release history is linked upstream.
- CMake, pkg-config and Doxygen name Catch3 and its repository; the
  amalgamated files say which Catch3 version and which Catch2 engine they
  come from.
</pre>
</div>
</content>
</entry>
<entry>
<title>Generate pkg-config files at install time</title>
<updated>2025-07-10T14:39:46+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-07-10T14:39:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=3839e27f056cd975e5be2faa9adb5a8cf1f5dcf4'/>
<id>3839e27f056cd975e5be2faa9adb5a8cf1f5dcf4</id>
<content type='text'>
This enables us to generate pkg-config with proper paths if the
installation prefix is decided at install time, e.g. with
```
cmake --install build-dir --prefix /path/to/somewhere
```

It also means that we can use CMake's generator expression to get
the _real_ final name of the libraries, e.g. including debug postfix.

Closes #2979
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This enables us to generate pkg-config with proper paths if the
installation prefix is decided at install time, e.g. with
```
cmake --install build-dir --prefix /path/to/somewhere
```

It also means that we can use CMake's generator expression to get
the _real_ final name of the libraries, e.g. including debug postfix.

Closes #2979
</pre>
</div>
</content>
</entry>
<entry>
<title>pkgconfig: Add missing entries</title>
<updated>2021-09-11T17:02:21+00:00</updated>
<author>
<name>Biswapriyo Nath</name>
</author>
<published>2021-09-10T18:32:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=efd8cc8777406457a34e15313076ac3a77d4e54b'/>
<id>efd8cc8777406457a34e15313076ac3a77d4e54b</id>
<content type='text'>
This adds prefix and exec_prefix fields</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds prefix and exec_prefix fields</pre>
</div>
</content>
</entry>
<entry>
<title>Rename CMake/pkg-config target Catch2Main to Catch2WithMain</title>
<updated>2020-05-03T16:54:38+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-05-03T16:54:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=19ecad6f68154df2ba182c93224bdda8d7527b34'/>
<id>19ecad6f68154df2ba182c93224bdda8d7527b34</id>
<content type='text'>
This describes the reality better, as it also links in the rest
of Catch2.

The on-disk name of the static library remains just `Catch2Main`,
as that is what it is -- single main function -- and on-disk artifacts
cannot describe link dependencies.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This describes the reality better, as it also links in the rest
of Catch2.

The on-disk name of the static library remains just `Catch2Main`,
as that is what it is -- single main function -- and on-disk artifacts
cannot describe link dependencies.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update Catch2-provided pkg-config</title>
<updated>2020-03-18T09:51:35+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2020-03-18T09:51:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=121f04ffcf78e8bd2184b12e54b6388af0e537d9'/>
<id>121f04ffcf78e8bd2184b12e54b6388af0e537d9</id>
<content type='text'>
Also fixes an installation issue, where some installation steps
would not properly pick up `CMAKE_INSTALL_PREFIX` when set.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also fixes an installation issue, where some installation steps
would not properly pick up `CMAKE_INSTALL_PREFIX` when set.
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve pkg-config integration a bit</title>
<updated>2018-06-24T10:32:22+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2018-06-23T13:03:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=6c1145d922ac03bbfe17cb3152aa55a706426792'/>
<id>6c1145d922ac03bbfe17cb3152aa55a706426792</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Integrate CMake with `&lt;catch2/catch.hpp&gt;` include paths</title>
<updated>2018-06-24T10:32:22+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2018-06-11T08:48:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=44722f9ed3d019bdff92d003f9e73333e68c503a'/>
<id>44722f9ed3d019bdff92d003f9e73333e68c503a</id>
<content type='text'>
This also goes for pkg-config installed by our CMake installation.

This includes

* Updating CMake version on Travis
* Adding a `Catch2` subfolder to the `single_include/` folder to
provide this include path both _inside_ the repository, and _outside_.
* Updated examples to build with the new paths
* Other general CMake cleanup
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This also goes for pkg-config installed by our CMake installation.

This includes

* Updating CMake version on Travis
* Adding a `Catch2` subfolder to the `single_include/` folder to
provide this include path both _inside_ the repository, and _outside_.
* Updated examples to build with the new paths
* Other general CMake cleanup
</pre>
</div>
</content>
</entry>
</feed>
