CMake Community Modules
This repository groups some usefull 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.
- DefaultInstallPrefix : Set
CMAKE_INSTALL_PREFIXif it has not been defined before. - Doctest : Use
CPMto setup doctest. - Messages : Redefines the
messagecommand to use personnalized styles. - PreventInSourceBuilds : Prevents building the project from his source directory.
- Standards : Set the
CMAKE_C_STANDARDorCMAKE_CXX_STANDARDto the required standard. - Testings : Some
CMakefunctions to perform some tests inCMake files. - CPM : Wrapper to CPM, the Setup-free
CMakedependency management. - Ping : A basic ping for
CMake. Test if you are online.