{"id":26138051,"url":"https://github.com/zenitheesc/cand","last_synced_at":"2026-03-09T17:43:53.126Z","repository":{"id":38826096,"uuid":"428059736","full_name":"zenitheesc/cand","owner":"zenitheesc","description":"Daemon service based on the Frameworkd SDK to comunicate via CAN","archived":false,"fork":false,"pushed_at":"2022-06-02T11:50:38.000Z","size":47,"stargazers_count":0,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-11T01:44:38.293Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zenitheesc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-14T22:49:47.000Z","updated_at":"2022-07-07T20:55:25.000Z","dependencies_parsed_at":"2022-09-18T08:41:46.022Z","dependency_job_id":null,"html_url":"https://github.com/zenitheesc/cand","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"zenitheesc/modern-cpp-template","purl":"pkg:github/zenitheesc/cand","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenitheesc%2Fcand","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenitheesc%2Fcand/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenitheesc%2Fcand/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenitheesc%2Fcand/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zenitheesc","download_url":"https://codeload.github.com/zenitheesc/cand/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zenitheesc%2Fcand/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30305205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T17:35:44.120Z","status":"ssl_error","status_checked_at":"2026-03-09T17:35:43.707Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":"2025-03-11T01:44:40.437Z","updated_at":"2026-03-09T17:43:53.099Z","avatar_url":"https://github.com/zenitheesc.png","language":"CMake","readme":"[![Actions Status](https://github.com/filipdutescu/modern-cpp-template/workflows/MacOS/badge.svg)](https://github.com/filipdutescu/modern-cpp-template/actions)\n[![Actions Status](https://github.com/filipdutescu/modern-cpp-template/workflows/Windows/badge.svg)](https://github.com/filipdutescu/modern-cpp-template/actions)\n[![Actions Status](https://github.com/filipdutescu/modern-cpp-template/workflows/Ubuntu/badge.svg)](https://github.com/filipdutescu/modern-cpp-template/actions)\n[![codecov](https://codecov.io/gh/filipdutescu/modern-cpp-template/branch/master/graph/badge.svg)](https://codecov.io/gh/filipdutescu/modern-cpp-template)\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/filipdutescu/modern-cpp-template)](https://github.com/filipdutescu/modern-cpp-template/releases)\n\n# Modern C++ Template\n\nA quick C++ template for modern CMake projects, aimed to be an easy to use\nstarting point.\n\nThis is my personal take on such a type of template, thus I might not use the\nbest practices or you might disagree with how I do things. Any and all feedback\nis greatly appreciated!\n\n## Features\n\n* Modern **CMake** configuration and project, which, to the best of my\nknowledge, uses the best practices,\n\n* An example of a **Clang-Format** config, inspired from the base *Google* model,\nwith minor tweaks. This is aimed only as a starting point, as coding style\nis a subjective matter, everyone is free to either delete it (for the *LLVM*\ndefault) or supply their own alternative,\n\n* **Static analyzers** integration, with *Clang-Tidy* and *Cppcheck*, the former\nbeing the default option,\n\n* **Doxygen** support, through the `ENABLE_DOXYGEN` option, which you can enable\nif you wish to use it,\n\n* **Unit testing** support, through *GoogleTest* (with an option to enable\n*GoogleMock*) or *Catch2*,\n\n* **Code coverage**, enabled by using the `ENABLE_CODE_COVERAGE` option, through\n*Codecov* CI integration,\n\n* **Package manager support**, with *Conan* and *Vcpkg*, through their respective\noptions\n\n* **CI workflows for Windows, Linux and MacOS** using *GitHub Actions*, making\nuse of the caching features, to ensure minimum run time,\n\n* **.md templates** for: *README*, *Contributing Guideliness*,\n*Issues* and *Pull Requests*,\n\n* **Permissive license** to allow you to integrate it as easily as possible. The\ntemplate is licensed under the [Unlicense](https://unlicense.org/),\n\n* Options to build as a header-only library or executable, not just a static or\nshared library.\n\n* **Ccache** integration, for speeding up rebuild times\n\n## Getting Started\n\nThese instructions will get you a copy of the project up and running on your local\nmachine for development and testing purposes.\n\n### Prerequisites\n\nThis project is meant to be only a template, thus versions of the software used\ncan be change to better suit the needs of the developer(s). If you wish to use the\ntemplate *as-is*, meaning using the versions recommended here, then you will need:\n\n* **CMake v3.15+** - found at [https://cmake.org/](https://cmake.org/)\n\n* **C++ Compiler** - needs to support at least the **C++17** standard, i.e. *MSVC*,\n*GCC*, *Clang*\n\n\u003e ***Note:*** *You also need to be able to provide ***CMake*** a supported\n[generator](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html).*\n\n### Installing\n\nIt is fairly easy to install the project, all you need to do is clone if from\n[GitHub](https://github.com/filipdutescu/modern-cpp-template) or\n[generate a new repository from it](https://github.com/filipdutescu/modern-cpp-template/generate)\n(also on **GitHub**).\n\nIf you wish to clone the repository, rather than generate from it, you simply need\nto run:\n\n```bash\ngit clone https://github.com/filipdutescu/modern-cpp-template/\n```\n\nAfter finishing getting a copy of the project, with any of the methods above, create\na new folder in the `include/` folder, with the name of your project.  Edit\n`cmake/SourcesAndHeaders.cmake` to add your files.\n\nYou will also need to rename the `cmake/ProjectConfig.cmake.in` file to start with\nthe ***exact name of your project***. Such as `cmake/MyNewProjectConfig.cmake.in`.\nYou should also make the same changes in the GitHub workflows provided, notably\n[`.github/workflows/ubuntu.yml`](.github/workflows/ubuntu.yml), in which you should\nreplace the CMake option `-DProject_ENABLE_CODE_COVERAGE=1` to\n`-DMyNewProject_ENABLE_CODE_COVERAGE=1`.\n\nFinally, change `\"Project\"` from `CMakeLists.txt`, from\n\n```cmake\nproject(\n  \"Project\"\n  VERSION 0.1.0\n  LANGUAGES CXX\n)\n```\n\nto the ***exact name of your project***, i.e. using the previous name it will become:\n\n```cmake\nproject(\n  MyNewProject\n  VERSION 0.1.0\n  LANGUAGES CXX\n)\n```\n\nTo install an already built project, you need to run the `install` target with CMake.\nFor example:\n\n```bash\ncmake --build build --target install --config Release\n\n# a more general syntax for that command is:\ncmake --build \u003cbuild_directory\u003e --target install --config \u003cdesired_config\u003e\n```\n\n## Building the project\n\nTo build the project, all you need to do, ***after correctly\n[installing the project](README.md#Installing)***, is run a similar **CMake** routine\nto the the one below:\n\n```bash\nmkdir build/ \u0026\u0026 cd build/\ncmake .. -DCMAKE_INSTALL_PREFIX=/absolute/path/to/custom/install/directory\ncmake --build . --target install\n```\n\n\u003e ***Note:*** *The custom ``CMAKE_INSTALL_PREFIX`` can be omitted if you wish to\ninstall in [the default install location](https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html).*\n\nMore options that you can set for the project can be found in the\n[`cmake/StandardSettings.cmake` file](cmake/StandardSettings.cmake). For certain\noptions additional configuration may be needed in their respective `*.cmake` files\n(i.e. Conan needs the `CONAN_REQUIRES` and might need the `CONAN_OPTIONS` to be setup\nfor it work correctly; the two are set in the [`cmake/Conan.cmake` file](cmake/Conan.cmake)).\n\n## Generating the documentation\n\nIn order to generate documentation for the project, you need to configure the build\nto use Doxygen. This is easily done, by modifying the workflow shown above as follows:\n\n```bash\nmkdir build/ \u0026\u0026 cd build/\ncmake .. -D\u003cproject_name\u003e_ENABLE_DOXYGEN=1 -DCMAKE_INSTALL_PREFIX=/absolute/path/to/custom/install/directory\ncmake --build . --target doxygen-docs\n```\n\n\u003e ***Note:*** *This will generate a `docs/` directory in the **project's root directory**.*\n\n## Running the tests\n\nBy default, the template uses [Google Test](https://github.com/google/googletest/)\nfor unit testing. Unit testing can be disabled in the options, by setting the\n`ENABLE_UNIT_TESTING` (from\n[cmake/StandardSettings.cmake](cmake/StandardSettings.cmake)) to be false. To run\nthe tests, simply use CTest, from the build directory, passing the desire\nconfiguration for which to run tests for. An example of this procedure is:\n\n```bash\ncd build          # if not in the build directory already\nctest -C Release  # or `ctest -C Debug` or any other configuration you wish to test\n\n# you can also run tests with the `-VV` flag for a more verbose output (i.e.\n#GoogleTest output as well)\n```\n\n### End to end tests\n\nIf applicable, should be presented here.\n\n### Coding style tests\n\nIf applicable, should be presented here.\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our how you can\nbecome a contributor and the process for submitting pull requests to us.\n\n## Versioning\n\nThis project makes use of [SemVer](http://semver.org/) for versioning. A list of\nexisting versions can be found in the\n[project's releases](https://github.com/filipdutescu/modern-cpp-template/releases).\n\n## Authors\n\n* **Filip-Ioan Dutescu** - [@filipdutescu](https://github.com/filipdutescu)\n\n## License\n\nThis project is licensed under the [Unlicense](https://unlicense.org/) - see the\n[LICENSE](LICENSE) file for details\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenitheesc%2Fcand","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzenitheesc%2Fcand","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenitheesc%2Fcand/lists"}