Releases: cpm-cmake/CPM.cmake
Options are now scoped to the dependency
Previously, function passed to a dependency were stored in the CMake cache. Following version 0.32.0, options are now scoped to the dependency and not leaked into the parent or CMake cache. This could potentially break projects, if relied on options entering the cache, however we assume that the change leads to a more predictable behaviour for almost all use cases. See #222 for a detailed discussion.
Additionally, the change means that we cannot (easily) check for option consistency, so the check has been disabled for now and is planned to be re-implemented in a further update.
Fix source subdirectories support
Fixes a bug that prevented SOURCE_SUBDIR from working as expected.
URL support in shorthand syntax
The shorthand syntax now supports URL patterns, inferring name and version automatically. Hash validation is also supported. See the readme or #220 for details.
Example
CPMAddPackage("https://example.com/my-package-1.2.3.zip#MD5=68e20f674a48be38d60e129f600faf7d")
Single-argument shorthand syntax
Adds a new single-argument shorthand syntax for CPMAddPackage
, which tries to infer name, tag and version information from the provided argument string. See #205 and the readme for details.
Example
Before
CPMAddPackage(
NAME catch2
GITHUB_REPO catchorg/Catch2
VERSION 2.5.0
EXCLUDE_FROM_ALL YES
)
After
CPMAddPackage("gh:catchorg/[email protected]")
Infer name from git repo if possible
Now tries to infer the package name automatically from a given git repository URL. See #202 for details.
Example
CPMAddPackage(
NAME Catch2
GITHUB_REPOSITORY catchorg/Catch2
VERSION 2.5.0
)
Is now equivalent to
CPMAddPackage(
GITHUB_REPOSITORY catchorg/Catch2
VERSION 2.5.0
)
Add option EXCLUDE_FROM_ALL
This adds an optional parameter EXCLUDE_FROM_ALL
that prevents packages from leaking unwanted targets (such as tests, examples) to CPM.cmake projects. See #152 and #198 for details.
Usage example
CPMAddPackage(
NAME googletest
GITHUB_REPOSITORY google/googletest
VERSION 1.8.0
GIT_TAG release-1.8.0
# prevent googletest targets from leaking into all
EXCLUDE_FROM_ALL YES
)
Optionally add dependencies using EXCLUDE_FROM_ALL
Add dependencies using EXCLUDE_FROM_ALL
Migrate to GitHub organisation
The CPM.cmake source code now resides at the brand new cpm-cmake
organisation. This will help the project grow by organising related projects and managing collaborators. This release updates related URLs in the CPM.cmake script.
Fix super build issues
- Fixed an issue caused by a bug in CMake < 3.17, where FetchContent wasn't properly included when importing CPM.cmake independently from different directories (#192).
- Updated examples with newer versions and cleaner CMake code (#190).
Thanks to @ClausKlein and @xmuller for the PRs!