{"id":19653502,"url":"https://github.com/flagarde/cmakemm","last_synced_at":"2026-03-02T09:02:23.737Z","repository":{"id":38297255,"uuid":"306355781","full_name":"flagarde/CMakeMM","owner":"flagarde","description":"📦 CMake Modules Manager","archived":false,"fork":false,"pushed_at":"2026-02-26T10:27:46.000Z","size":339,"stargazers_count":6,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-26T16:22:30.538Z","etag":null,"topics":["cmake","module-manager"],"latest_commit_sha":null,"homepage":"https://flagarde.github.io/docs/CMakeMM","language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flagarde.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.cmake","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-10-22T14:01:25.000Z","updated_at":"2026-02-26T10:27:50.000Z","dependencies_parsed_at":"2023-12-11T21:26:32.258Z","dependency_job_id":"36ebed5b-0cd0-4e92-9ccc-715a752416af","html_url":"https://github.com/flagarde/CMakeMM","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/flagarde/CMakeMM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flagarde%2FCMakeMM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flagarde%2FCMakeMM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flagarde%2FCMakeMM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flagarde%2FCMakeMM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flagarde","download_url":"https://codeload.github.com/flagarde/CMakeMM/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flagarde%2FCMakeMM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29996273,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T01:47:34.672Z","status":"online","status_checked_at":"2026-03-02T02:00:07.342Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cmake","module-manager"],"created_at":"2024-11-11T15:14:20.992Z","updated_at":"2026-03-02T09:02:23.725Z","avatar_url":"https://github.com/flagarde.png","language":"CMake","readme":"MOVED TO https://github.com/cmake-tools/cmmm\n\n\u003ch1 align=\"center\"\u003e\n  \u003ca href=\"https://github.com/flagarde/CMakeMM\"\u003e\u003cimg src=\"./docs/imgs/logo.png\" width=\"300\" title=\"CMakeMM logo\" alt=\"CMakeMM\"\u003e\u003c/a\u003e\n\nCMakeMM\n\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eCMake Modules Manager.\u003c/h4\u003e\n\n\u003ch4 align=\"center\"\u003e\n\n![GitHub](https://img.shields.io/github/license/flagarde/CMakeMM)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/flagarde/CMakeMM)\n![GitHub repo size](https://img.shields.io/github/repo-size/flagarde/CMakeMM)\n![Release](https://github.com/flagarde/CMakeMM/workflows/Release/badge.svg)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/69bc83f9b6a44f52ae5d2790f55d2a0b)](https://www.codacy.com/gh/flagarde/CMakeMM/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=flagarde/CMakeMM\u0026amp;utm_campaign=Badge_Grade)\n[![Docs](https://github.com/flagarde/CMakeMM/actions/workflows/Docs.yml/badge.svg)](https://github.com/flagarde/CMakeMM/actions/workflows/Docs.yml)\n\n\u003c/h4\u003e\n\n\u003ch1 align=\"center\"\u003e\u003ca href=\"https://flagarde.github.io/docs/CMakeMM/\"\u003e\n\n```text\n📖 Documentation\n```\n\n\u003c/a\u003e\u003c/h1\u003e\n\n## Tests\n\n|       Linux       |       MacOS       |       Windows       |\n|:-----------------:|:-----------------:|---------------------|\n| [![Linux][lb]][l] | [![MacOS][mb]][m] | [![Windows][wb]][w] |\n\n## ✨ Introduction\n\nThis repository's main product is the GetCMakeMM.cmake file in the repository root. It downloads CMakeMM which in turn download the list of modules available for download and consumption.\n\n## ❓ How to use CMakeMM\n\n### 1️⃣ Download `GetCMakeMM.cmake`\n\nTo use `CMakeMM` you have to download the latest [`GetCMakeMM.cmake`](https://github.com/flagarde/CMakeMM/blob/master/GetCMakeMM.cmake) and put it in a place CMake can find it.\n\n### 2️⃣ Use `GetCMakeMM.cmake` in your `CMakeLists.txt`\n\n```cmake\nset(CMAKE_MODULE_PATH \"${CMAKE_MODULE_PATH}\" \"${CMAKE_CURRENT_SOURCE_DIR}/cmake\")\ninclude(GetCMakeMM)\ncmmm(VERSION \"2.0\"\n     REPOSITORY \"flagarde/CMakeMM\"\n     VERBOSITY VERBOSE\n     DESTINATION \"CMakeMM\"\n     ALWAYS_DOWNLOAD)\n```\n\n*Will download `CMakeMM` from the release version `1.0` in flagarde/CMakeMM repository under `CMakeMM` folder.*\n\n**Options :**\n\n- `PROVIDER` : From where to download CMakeMM (GitHub, gitlab or gitee).\n- `ALWAYS_DOWNLOAD` : Always download the CMakeMM files.\n- `NO_COLOR` : Turn out the color.\n- `REPOSITORY` : Repository where to download CMakeMM.\n- `VERSION` : Version of CMakeMM to download.\n- `DESTINATION` : Where to install CMakeMM.\n- `TIMEOUT` : Terminate the operation after a given total time has elapsed.\n- `INACTIVITY_TIMEOUT` : Terminate the operation after a period of inactivity.\n- `VERBOSITY` : Verbosity of CMakeMM `NOTICE`, `STATUS`, `VERBOSE`, `DEBUG` and `TRACE`.\n- `IGNORE_NEW_VERSION` : Ignore new versions of `CMakeMM`.\n\n### 3️⃣ Tell to `CMakeMM` where to find the modules list and where to save the modules\n\n```cmake\ncmmm_modules_list(URL \"https://raw.githubusercontent.com/flagarde/CMakeCM/main/ModulesList.cmake\"\n                  BRANCH master\n                  FOLDER modules\n                  FILENAME ModuleLists\n                  DESTINATION \"Modules\")\n```\n\n*Will download the module list file called `ModuleLists.cmake` in folder `modules` on branch `master` from the GitHub depot `https://raw.githubusercontent.com/SDHCAL/SDHCALCMakeModules`*.\n\n**Options :**\n\n- `ALWAYS_DOWNLOAD` : Always download the Modules List.\n- `URL` : URL where to download the Modules List (`https://raw.githubusercontent.com/flagarde/CMakeMM` per default).\n- `REPOSITORY` : GitHub repository to download the Modules List (`flagarde/CMakeCM` for example).\n- `PROVIDER` : From where to download CMakeMM (GitHub, gitlab or gitee).\n- `BRANCH` : Branch where to download the Modules List (`master` per default).\n- `FOLDER` : Folder where to download the Modules List.\n- `FILENAME` : Name of the Modules List file.\n- `DESTINATION` : Where to install the Modules.\n\n### 4️⃣ Include the modules you need\n\n```cmake\ninclude(MyWonderfulModule)\n```\n\n*Will download the module `MyWonderfulModule.cmake` is it's not present in the `CMAKE_MODULE_PATH` folders or `Modules` folder, then include it. Otherwise, it will just include it.*\n\n## ⚗  Example\n\nCMakeLists.txt :\n\n```cmake\ncmake_minimum_required(VERSION 3.10...3.17.2 FATAL_ERROR)\nproject(MySoftware\n        VERSION \"0.0.1.0\"\n        DESCRIPTION \"MySoftware\"\n        HOMEPAGE_URL \"https://github.com/flagarde/MySoftware\"\n        LANGUAGES CXX)\n\nset(CMAKE_MODULE_PATH \"${CMAKE_MODULE_PATH}\" \"${CMAKE_CURRENT_SOURCE_DIR}/cmake\")\n\ninclude(GetCMakeMM)\n\ncmmm(VERSION \"2.0\"\n     REPOSITORY \"flagarde/CMakeMM\"\n     VERBOSITY VERBOSE\n     DESTINATION \"CMakeMM\"\n     ALWAYS_DOWNLOAD)\n\ncmmm_modules_list(URL \"https://raw.githubusercontent.com/SDHCAL/SDHCALCMakeModules\"\n                  BRANCH main\n                  DESTINATION \"Modules\")\n\n# Now download the modules\ninclude(Colors)\n```\n\n## 📝 Create a Modules List\n\nModules can be `LOCALE` or `REMOTE` :\n\n### ➕ Adding a \"Local\" Module\n\nLocal 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.\n\nTo 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.\n\nAfter adding the module, add a call to `cmcm_module` in the Modules List.\n\nSuppose you add a `SuperCoolModule.cmake` to `modules`. The resulting call in `modules/ModulesList.cmake` will look something like this :\n\n```cmake\ncmcm_module(SuperCoolModule.cmake LOCAL modules/SuperCoolModule.cmake VERSION 1)\n```\n\nThe `VERSION` argument is an arbitrary string that is used to invalidate local copies of the module that have been downloaded.\n\n*The path to the LOCAL module is taken from the `root` of the `Git` `branch`, not the relative path of the `FOLDER` argument in `cmmm_modules_list`.*\n\n### ➕ Adding a \"Remote\" Module\n\nIf 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 :\n\n```cmake\ncmcm_module(MyAwesomeModule.cmake\n            REMOTE https://some-place.example.com/files/path/MyAwesomeModule.cmake\n            VERSION 1)\n```\n\nThe `VERSION` argument is an arbitrary string that is used to invalidate local copies of the module that have been downloaded.\n\nThe `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 :\n\n1. The URL *must* use `https`.\n2. 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.\n\n[l]: https://github.com/flagarde/CMakeMM/actions/workflows/Linux.yml\n[lb]: https://github.com/flagarde/CMakeMM/actions/workflows/Linux.yml/badge.svg\n\n[m]: https://github.com/flagarde/CMakeMM/actions/workflows/MacOS.yml\n[mb]: https://github.com/flagarde/CMakeMM/actions/workflows/MacOS.yml/badge.svg\n\n[w]: https://github.com/flagarde/CMakeMM/actions/workflows/Windows.yml\n[wb]: https://github.com/flagarde/CMakeMM/actions/workflows/Windows.yml/badge.svg\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflagarde%2Fcmakemm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflagarde%2Fcmakemm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflagarde%2Fcmakemm/lists"}