{"id":20726650,"url":"https://github.com/embeddedartistry/cmake-project-skeleton","last_synced_at":"2026-02-25T08:42:06.051Z","repository":{"id":48174953,"uuid":"279377113","full_name":"embeddedartistry/cmake-project-skeleton","owner":"embeddedartistry","description":"Reusable project skeleton for embedded C \u0026 C++ projects using CMake.","archived":false,"fork":false,"pushed_at":"2024-06-15T05:56:36.000Z","size":88,"stargazers_count":48,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-23T18:52:01.117Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/embeddedartistry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","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}},"created_at":"2020-07-13T18:07:31.000Z","updated_at":"2025-04-15T03:10:12.000Z","dependencies_parsed_at":"2024-11-22T08:31:11.959Z","dependency_job_id":null,"html_url":"https://github.com/embeddedartistry/cmake-project-skeleton","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/embeddedartistry/cmake-project-skeleton","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/embeddedartistry%2Fcmake-project-skeleton","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/embeddedartistry%2Fcmake-project-skeleton/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/embeddedartistry%2Fcmake-project-skeleton/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/embeddedartistry%2Fcmake-project-skeleton/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/embeddedartistry","download_url":"https://codeload.github.com/embeddedartistry/cmake-project-skeleton/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/embeddedartistry%2Fcmake-project-skeleton/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29815028,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T05:36:42.804Z","status":"ssl_error","status_checked_at":"2026-02-25T05:36:31.934Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-11-17T04:26:28.944Z","updated_at":"2026-02-25T08:42:06.035Z","avatar_url":"https://github.com/embeddedartistry.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Project Title\n\nProvide an introductory paragraph, describing:\n\n* What your project does\n* Why people should consider using your project\n* Link to project home page\n\n## Table of Contents\n\n1. [About the Project](#about-the-project)\n2. [Project Status](#project-status)\n3. [Getting Started](#getting-started)\n    1. [Requirements](#requirements)\n        1. [git-lfs](#git-lfs)\n        1. [CMake Build System](#cmake-build-system)\n    2. [Getting the Source](#getting-the-source)\n    3. [Building](#building)\n    4. [Testing](#testing)\n5. [Documentation](#documentation)\n6. [Need Help?](#need-help)\n7. [Contributing](#contributing)\n8. [Further Reading](#further-reading)\n9. [Authors](#authors)\n10. [License](#license)\n11. [Acknowledgments](#acknowledgements)\n\n# About the Project\n\nHere you can provide more details about the project\n* What features does your project provide?\n* Short motivation for the project? (Don't be too long winded)\n* Links to the project site\n\n```\nShow some example code to describe what your project does\nShow some of your APIs\n```\n\n**[Back to top](#table-of-contents)**\n\n# Project Status\n\nDescribe the current release and any notes about the current state of the project. Examples: currently compiles on your host machine, but is not cross-compiling for ARM, APIs are not set, feature not implemented, etc.\n\n**[Back to top](#table-of-contents)**\n\n## Getting Started\n\n### Requirements\n\nThis project uses [Embedded Artistry's standard CMake build system](https://embeddedartistry.com/fieldatlas/embedded-artistrys-standardized-cmake-build-system/), and dependencies are described in detail [on our website](https://embeddedartistry.com/fieldatlas/embedded-artistrys-standardized-cmake-build-system/).\n\nAt a minimum you will need:\n\n* [`git-lfs`](https://git-lfs.github.com), which is used to store binary files in this repository\n* [CMake](#cmake-build-system) is the build system\n* Some kind of compiler for your target system.\n    - This repository has been tested with:\n        - gcc-7, gcc-8, gcc-9\n        - arm-none-eabi-gcc\n        - Apple clang\n        - Mainline clang\n\n#### git-lfs\n\nThis project stores some files using [`git-lfs`](https://git-lfs.github.com).\n\nTo install `git-lfs` on Linux:\n\n```\nsudo apt install git-lfs\n```\n\nTo install `git-lfs` on OS X:\n\n```\nbrew install git-lfs\n```\n\nAdditional installation instructions can be found on the [`git-lfs` website](https://git-lfs.github.com).\n\n#### CMake Build System\n\nThe official way to install CMake is to use the pre-compiled binaries and installers on the [CMake download page](https://cmake.org/download/). You can also [compile CMake from source](https://cmake.org/install/). CMake can also be installed through popular package managers, although they may be slightly behind the latest release available on the website.\n\nYou can install CMake with `apt` on Linux/WSL:\n\n```\nsudo apt-get install cmake\n```\n\n\u003e **Note:** Does this not work? You may need to add an [apt repository](https://apt.kitware.com/).\n\nOS X users can install CMake using [Homebrew](homebrew):\n\n```\nbrew install cmake\n```\n\nYou can also use Python's `pip` to install CMake:\n\n```\n$ pip3 install cmake\n```\n\nMake is the default backend for CMake, but our Makefile interface defaults to Ninja. Ninja is similar in purpose to Make, but provides better performance. \n\nTo install Ninja on Linux \u0026 WSL:\n\n```\n$ sudo apt install ninja-build\n```\n\nTo install on OSX:\n\n```\n$ brew install ninja\n```\n\n\n**[Back to top](#table-of-contents)**\n\n### Getting the Source\n\nThis project uses [`git-lfs`](https://git-lfs.github.com), so please install it before cloning. If you cloned prior to installing `git-lfs`, simply run `git lfs pull` after installation.\n\nThis project is hosted on GitHub. You can clone the project directly using this command:\n\n```\ngit clone --recursive git@github.com:embeddedartistry/project-skeleton.git\n```\n\nIf you don't clone recursively, be sure to run the following command in the repository or your build will fail:\n\n```\ngit submodule update --init\n```\n\n**[Back to top](#table-of-contents)**\n\n### Building\n\nIf Make is installed, the library can be built by issuing the following command:\n\n```\nmake\n```\n\nThis will build all targets for your current architecture.\n\nYou can clean builds using:\n\n```\nmake clean\n```\n\nYou can eliminate the generated `buildresults` folder using:\n\n```\nmake distclean\n```\n\nYou can also use  `CMake` directly for compiling.\n\nCreate a build output folder:\n\n```\ncmake -B buildresults\n```\n\nAnd build all targets by running\n\n```\nninja -C buildresults\n```\n\nCross-compilation is handled using CMake toolchain files. Example files are included in the [`cmake/toolchains/cross`](cmake/toolchains/cross/) folder. You can write your own cross files for your specific processor by defining the toolchain, compilation flags, and linker flags. These settings will be used to compile the project.\n\nCross-compilation must be configured using the CMake command when creating the build output folder. For example:\n\n```\ncmake -B buildresults -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/cross/cortex-m3.cmake\n```\n\nFollowing that, you can run `make` (at the project root) or `ninja` to build the project.\n\nTests will not be cross-compiled. They will only be built for the native platform.\n\n**Full instructions for building the project, using alternate toolchains, and running supporting tooling are documented in [Embedded Artistry's Standardized CMake Build System](https://embeddedartistry.com/fieldatlas/embedded-artistrys-standardized-cmake-build-system/) on our website.**\n\n**[Back to top](#table-of-contents)**\n\n### Testing\n\nThe tests for this project are written in CMocka and Catch, which are included as external dependencies and does not need to be installed on your system. You can run the tests by issuing the following command:\n\n```\nmake test\n```\n\nBy default, test results are generated for use by the CI server and are formatted in JUnit XML. The test results XML files can be found in `buildresults/test/`.\n\n**[Back to top](#table-of-contents)**\n\n## Documentation\n\nDocumentation can be built locally by running the following command:\n\n```\nmake docs\n```\n\nDocumentation can be found in `buildresults/docs`, and the root page is `index.html`.\n\n**[Back to top](#table-of-contents)**\n\n## Need help?\n\nIf you need further assistance or have any questions, please file a GitHub issue or send us an email using the [Embedded Artistry Contact Form](http://embeddedartistry.com/contact).\n\nYou can also [reach out on Twitter: mbeddedartistry](https://twitter.com/mbeddedartistry/).\n\n## Contributing\n\nIf you are interested in contributing to this project, please read our [contributing guidelines](docs/CONTRIBUTING.md).\n\n## Authors\n\n* **[Phillip Johnston](https://github.com/phillipjohnston)**\n\n## License\n\nCopyright © 2020 Embedded Artistry LLC\n\nSee the [LICENSE](LICENSE) file for licensing details.\n\n## Acknowledgments\n\nMake any public acknowledgments here\n\n**[Back to top](#table-of-contents)**\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fembeddedartistry%2Fcmake-project-skeleton","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fembeddedartistry%2Fcmake-project-skeleton","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fembeddedartistry%2Fcmake-project-skeleton/lists"}