You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
crueter 9406438d51
[vk] disable VK_EXT_vertex_input_dynamic_state again (#2954)
2 months ago
..
AddCIPackage [cmake, tools, docs] Update CPMUtil (#2790) 2 months ago
AddCIPackage.md [cmake] ffmpeg: use static on MSVC (#2946) 2 months ago
AddJsonPackage.md [cmake, tools, docs] Update CPMUtil (#2790) 2 months ago
AddPackage.md [cmake, tools, docs] Update CPMUtil (#2790) 2 months ago
README.md [cmake, tools, docs] Update CPMUtil (#2790) 2 months ago

README.md

CPMUtil

CPMUtil is a wrapper around CPM that aims to reduce boilerplate and add useful utility functions to make dependency management a piece of cake.

Global Options:

  • CPMUTIL_FORCE_SYSTEM (default OFF): Require all CPM dependencies to use system packages. NOT RECOMMENDED!
    • You may optionally override this (section)
  • CPMUTIL_FORCE_BUNDLED (default ON on MSVC and Android, OFF elsewhere): Require all CPM dependencies to use bundled packages.

You are highly encouraged to read AddPackage first, even if you plan to only interact with CPMUtil via AddJsonPackage.

AddPackage

The core of CPMUtil is the AddPackage function. AddPackage itself is fully CMake-based, and largely serves as an interface between CPM and the rest of CPMUtil.

AddCIPackage

AddCIPackage adds a package that follows crueter's CI repository spec.

AddJsonPackage

AddJsonPackage is the recommended method of usage for CPMUtil.

Lists

CPMUtil will create three lists of dependencies where AddPackage or similar was used. Each is in order of addition.

  • CPM_PACKAGE_NAMES: The names of packages included by CPMUtil
  • CPM_PACKAGE_URLS: The URLs to project/repo pages of packages
  • CPM_PACKAGE_SHAS: Short version identifiers for each package
    • If the package was included as a system package, (system) is appended thereafter
    • Packages whose versions can't be deduced will be left as unknown.

For an example of how this might be implemented in an application, see Eden's implementation: