flagarde / CMakeCM

:books: CMake Community Modules

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

πŸ“š CMakeCM GitHub GitHub code size in bytes GitHub repo size

CMake Community Modules

πŸ§ͺ Tests

Linux Clang Linux GCC MacOS Clang MacOS GCC Windows M2sys Windows MSVC
Github Linux Clang Linux GCC MacOS Clang MacOS GCC Windows MSYS2 Windows MSVC

✨ Introduction

This repository groups some useful CMake Modules that can be share between different repositories.

πŸ“ Create a Modules List

Modules can be LOCALE or REMOTE :

βž• Adding a "Local" Module

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.

βž• Adding a "Remote" Module

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:

  1. The URL must use https.
  2. 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.

πŸ“š Module Lists

About

:books: CMake Community Modules

License:MIT License


Languages

Language:CMake 98.8%Language:C++ 1.2%