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_PREFIX
if it has not been defined before. - Doctest : Use
CPM
to setup doctest. - Messages : Redefines the
message
command to use personnalized styles. - PreventInSourceBuilds : Prevents building the project from his source directory.
- Standards : Set the
CMAKE_C_STANDARD
orCMAKE_CXX_STANDARD
to the required standard. - Testings : Some
CMake
functions to perform some tests inCMake files
. - CPM : Wrapper to CPM, the Setup-free
CMake
dependency management. - Ping : A basic ping for
CMake
. Test if you are online.