{"id":44770122,"url":"https://github.com/tpalmerstudios/c-template","last_synced_at":"2026-02-16T05:11:01.310Z","repository":{"id":331711058,"uuid":"1131892453","full_name":"tpalmerstudios/c-template","owner":"tpalmerstudios","description":"C-Template is a small tool that generates a ready-to-use C project with CMake, debug/release targets, testing, clang-format, and Doxygen, so you can start writing C instead of configuring build systems.","archived":false,"fork":false,"pushed_at":"2026-02-04T05:20:49.000Z","size":151,"stargazers_count":2,"open_issues_count":14,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-04T16:25:44.315Z","etag":null,"topics":["beginner-friendly","beginner-project","c","cmake","starter-template","template"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tpalmerstudios.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"2026-01-10T22:34:26.000Z","updated_at":"2026-02-04T05:34:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tpalmerstudios/c-template","commit_stats":null,"previous_names":["tpalmerstudios/c-template"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/tpalmerstudios/c-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpalmerstudios%2Fc-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpalmerstudios%2Fc-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpalmerstudios%2Fc-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpalmerstudios%2Fc-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tpalmerstudios","download_url":"https://codeload.github.com/tpalmerstudios/c-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpalmerstudios%2Fc-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29500826,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T03:57:51.541Z","status":"ssl_error","status_checked_at":"2026-02-16T03:55:59.854Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["beginner-friendly","beginner-project","c","cmake","starter-template","template"],"created_at":"2026-02-16T05:11:00.741Z","updated_at":"2026-02-16T05:11:01.303Z","avatar_url":"https://github.com/tpalmerstudios.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# C-Template\n\n![C-Template Logo](https://github.com/tpalmerstudios/c-template/blob/main/assets/inkscape-logo.svg)\n\nC-Template is a project made to save time in starting a new project. It uses a script to take the name of the project and a brief description and add that into Doxygen as well as creating and running basic CMake setup.\n\nIntended to set up a basic program structure and common targets to save time so you can focus on coding.\n\n[![Super-Linter](https://github.com/tpalmerstudios/c-template/actions/workflows/super-linter.yml/badge.svg)](https://github.com/marketplace/actions/super-linter)\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)\n![Build \u0026 Test](https://github.com/tpalmerstudios/c-template/actions/workflows/cmake-single-platform.yml/badge.svg)\n\n## Usage\n\n```bash\n./project-gen.sh\n```\n\nInput a name for the project and a description.\n\n\u003e Some validation occurs, but I'd recommend not naming your project something that has a lot of special characters\n\u003e If you do, use a simplified version of the name that would be suitable in regular files and manually change it in the human readable locations.\n\nThat will generate a directory as a sibling to wherever the `c-template` package is or where you select when using the `--path` flag.\nA Git repository will init and files with the new names and valued are copied.\n\n| Flags                | Description                                                                         |\n| -------------------- | ----------------------------------------------------------------------------------- |\n| `-v`,`--version`     | output version information and exit                                                 |\n| `-h`,`--help`,`help` | display this help and exit                                                          |\n| `--no-git`           | skips all setup related to Git                                                      |\n| `--force`            | uses a direcotry even if it already exists. does NOT empty that folder              |\n| `--remove`           | removes a directory COMPLETELY before creating the template files in that directory |\n| `--path PATH`        | sets a directory where the project will be installed under                          |\n\n## Project Content\n\nThe generated project contains several targets and base files to build from.\n\n1. Documentation (Doxygen)\n2. Formatting and Linting (clang-format, shfmt)\n   - `clang-format` is defined\n   - `super-linter` is added as a GitHub Action\n3. Testing (ctest)\n   - Automated with GitHub Action\n4. Issue Templates\n5. Meta Files\n   - README.md\n   - LICENSE\n   - CHANGELOG.md\n   - CONTRIBUTING.md\n6. Debug (target in CMake)\n7. ~~Automatic Versioning~~\n\n## Test Install\n\n```bash\ncd ../proj-name\n./post-install.sh\n```\n\nThis runs cmake with all targets including documentation.\n\n## Dependencies\n\n### Required\n\n```bash\nbash\n```\n\n### Optional\n\n```bash\nCMake\nDoxygen\nclang-format\ngcc || clang\nmake\ngit\nninja\n```\n\n## Post Setup\n\nI make the assumption you know how to run all of the dependencies, but here are the most vital\n\n```bash\n# From the directory of your new project\n\n# generates documentation see: man doxygen\ndoxygen Doxyfile\n\n# Runs all targets of cmake through ninja\ncmake -G Ninja -B build\nninja -C build\n\n# Runs all targets of cmake through make\ncmake -B build\ncd build\nmake dev_build\n\n# Formats code\nclang-format -i filename.c\n```\n\n## CMake Options\n\n`-DCMAKE_BUILD_TYPE=Debug` for debug builds\n`-DBUILD_TESTS=OFF` to turn off testing\n`-DENABLE_WARNINGS=OFF` to disable compiler warnings\n\n**NOTE**: The bottom two should be turned off for release builds.\nI will be reworking those in CMake to have them set based on target or build type.\n\n---\n\n## Internal Variables\n\nThe following strings are found and replaced throughout the entire child directory.\n**01PROJTEMP**\n**01PROJUPPER**\n**01PROJCMD**\n**01PROJDESC**\n\n## Contact\n\n**\u003cobsoleteTiger@protonmail.com\u003e** is the best way to contact me.\nIn an emergency, try calling +1 911. _(/s)_\n\n## License\n\n_I love supporting the **[EFF](https://eff.org)**. Please donate to them if this program has been of any help_\n\nCopyright \u0026copy; 2026 [tpalmerstudios](mailto:obsoleteTiger@protonmail.com)\n\nLicense GPLv3+: GNU GPL version 3 or later [https://gnu.org/licenses/gpl.html](https://gnu.org/licenses/gpl.html).\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\nWritten by **tpalmerstudios**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpalmerstudios%2Fc-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftpalmerstudios%2Fc-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpalmerstudios%2Fc-template/lists"}