CMake Community Modules
| Linux Clang | Linux GCC | MacOS Clang | MacOS GCC | Windows M2sys | Windows MSVC | |
|---|---|---|---|---|---|---|
| Github |
This repository groups some useful CMake Modules that can be share between different repositories.
Modules can be LOCALE or REMOTE :
Local modules are contained within the repository given by URL in cmmm_modules_list. If you do not wish to own a separate repository to contain the module, this is the recommended way to do so.
To start, add a module in the repository. This will be the module that will be included by the user. It should consist of a single CMake file.
After adding the module, add a call to cmcm_module in the Modules List.
Suppose you add a SuperCoolModule.cmake to modules. The resulting call in modules/ModulesList.cmake will look something like this :
cmcm_module(SuperCoolModule.cmake
LOCAL modules/SuperCoolModule.cmake
VERSION 1)The VERSION argument is an arbitrary string that is used to invalidate local copies of the module that have been downloaded.
If you have a module that you wish to add, but it is contained in a remote location, you simply need to add the call in the Modules List`:
cmcm_module(MyAwesomeModule.cmake
REMOTE https://some-place.example.com/files/path/MyAwesomeModule.cmake
VERSION 1)The VERSION argument is an arbitrary string that is used to invalidate local copies of the module that have been downloaded.
The REMOTE is a URL to the file to download for the module. In order for your modification to be accepted into the repository, it must meet certain criteria:
- The URL must use
https. - The URL must refer to a stable file location. If using a
Git URL, it should refer to a specific commit, not to a branch.
-
- Color : Defines some colors and text styles.
- CPM : Wrapper for
CPMthe setup-free CMake dependency management. - DefaultInstallPrefix : Set
CMAKE_INSTALL_PREFIXif it has not been defined before. - Doctest : Use
CPMto set updoctest. - Fmt : Use
CPMto set upfmt. - GetLatestCMakeVersion : Obtain the CMake's latest version number.
- IXWebSocket : Use
CPMto set upIXWebSocket. - MagicEnum : Use
CPMto set upmagic_enum. - Missives : Defines the
missivecommand to use colored and personalized styles. - OpenSSL : Use
openssl-cmakehttps://github.com/flagarde/openssl-cmake to compileOpenSSLusingCPM. - Ping : A basic ping for CMake. Test if you are online.
- PreventInSourceBuilds : Prevents building the project from his source directory.
- SourceLocation : Use
CPMto set upsource_location. - Spdlog : Use
CPMto setupspdlog. - Standards : Set the
CMAKE_C_STANDARDorCMAKE_CXX_STANDARDto the required standard. - Testings : Some
CMakefunctions to perform some tests inCMake files. - Toml11 : Use
CPMto set uptoml11. - Zlib-ng : Compile
zlib-nghttps://github.com/zlib-ng/zlib-ng usingCPM.