{"id":30292926,"url":"https://github.com/cadons/cpp-project-template","last_synced_at":"2026-04-11T08:02:29.836Z","repository":{"id":309797487,"uuid":"1023250325","full_name":"Cadons/Cpp-Project-Template","owner":"Cadons","description":"C++ project template with CMake, vcpkg integration, optional Conan/other package manager support, and built-in Qt support for rapid cross-platform development.","archived":false,"fork":false,"pushed_at":"2025-08-13T20:16:42.000Z","size":61,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-13T22:14:09.214Z","etag":null,"topics":["cmake","conan","cpp","jinja2","python","vcpkg"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cadons.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-07-20T20:56:11.000Z","updated_at":"2025-08-13T20:20:20.000Z","dependencies_parsed_at":"2025-08-13T22:14:38.987Z","dependency_job_id":"4303791c-672a-4122-b4fa-b92bd3c1478c","html_url":"https://github.com/Cadons/Cpp-Project-Template","commit_stats":null,"previous_names":["cadons/cpp-project-template"],"tags_count":1,"template":true,"template_full_name":null,"purl":"pkg:github/Cadons/Cpp-Project-Template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cadons%2FCpp-Project-Template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cadons%2FCpp-Project-Template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cadons%2FCpp-Project-Template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cadons%2FCpp-Project-Template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cadons","download_url":"https://codeload.github.com/Cadons/Cpp-Project-Template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cadons%2FCpp-Project-Template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270791694,"owners_count":24645796,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"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","conan","cpp","jinja2","python","vcpkg"],"created_at":"2025-08-17T01:01:25.369Z","updated_at":"2026-04-11T08:02:29.755Z","avatar_url":"https://github.com/Cadons.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# C++ Project Template\n\nWelcome to the **C++ Template** — a flexible and extensible starting point for developing modern C++ applications. This template streamlines project organization, dependency management, and build configuration, following a modular and maintainable structure.\n\n---\n\n## 🔧 Features\n\n* **Project Structure**\n\n    * `app/`: Contains executable targets.\n    * `lib/`: Contains libraries (static or shared).\n    * Each module includes a `test/` folder with unit tests (built as executables, but not part of `app/`).\n\n* **Package Management**\n\n    * Currently supports **vcpkg**.\n    * Future support planned for **Conan** and others.\n\n* **Tooling**\n\n    * Built-in toolset to:\n\n        * Create new modules\n        * Add new source files\n        * Synchronize with Git (using subtrees)\n\n* **Build System**\n\n    * CMake-based\n    * Source list synchronization (no globbing)\n    * Optional support for Qt and Vcpkg integrations\n\n---\n\n## 🚀 Getting Started\n\n### 1. Configure the Project\n\nRun the configuration script based on your OS:\n\n* **Windows**: `configure.bat`\n* **Linux/macOS**: `configure.sh`\n\nFollow the interactive prompts to fill out project metadata. This information is stored in the `project.json` file in the root directory.\n\nThe configuration process generates:\n\n* Initial `app/` and `lib/` structures\n* Boilerplate files like `CMakeLists.txt`, `project.json`, etc.\n\n---\n\n### 2. Using the Toolset\n\nThe `tools/dev_tools.py` script provides interactive commands for managing your project.\n\nTo launch:\n\n```bash\npython tools/dev_tools.py\n```\n\nUse the help menu for available commands and usage instructions.\n\nYou can:\n\n* Create modules\n* Add new files\n* Synchronize Git subtrees\n\nFor projects with shared libraries across repositories, we recommend using **Git subtrees** over submodules for better integration.\n\n---\n\n### 3. Adding Source Files\n\nInstead of relying on CMake source globbing, this template maintains a curated list of source files per module.\n\nTo update this list, use the `fast_sources` script located at:\n\n* **Windows**: `tools/cli/windows/fast_sources.bat`\n* **Unix/Linux/macOS**: `tools/cli/unix/fast_sources.sh`\n\nRun it after adding or removing files to ensure CMake files stay in sync.\n\n---\n\n## 🛠 Versioning\n\nVersions are managed in:\n\n* `project.json` – project-level version\n* `module.json` – individual module versions\n\nCMake reads these values during the build process to apply the correct versioning.\n\n---\n\n## ✏️ Customization\n\nYou are encouraged to tailor the template to your specific needs:\n\n* Modify templates in the `.resources/templates` folder.\n* Extend the tools or add new features.\n\nIf your changes could benefit others, feel free to open a **merge request** to the template repository.\n\n---\n\n## 📁 Folder Structure\n\n```\n.\n├── app/                # Executables\n│       ├── src/\n│       ├── include/\n│       ├── resources/\n│       ├── test/\n│       └── module.json\n│       └── CMakeLists.json\n├── lib/                # Libraries\n│   └── module/         \n│       ├── src/\n│       ├── include/\n│       ├── resources/\n│       ├── test/\n│       └── module.json\n│       └── CMakeLists.json\n├── cmake/              # CMake utilities and helpers\n├── tools/              # Tooling scripts and CLI utilities\n├── resources/          # File and template resources\n├── configure.sh/bat    # Initial project setup\n├── project.json        # Project metadata\n└── CMakeLists.txt\n```\n\n---\n\n## 📌 Notes\n\n* This template enforces a consistent structure — please follow it for compatibility.\n* Utility functions in `cmake/` provide extended support for Qt, Vcpkg, and modular builds.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcadons%2Fcpp-project-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcadons%2Fcpp-project-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcadons%2Fcpp-project-template/lists"}