# cmake-init
> 🚀 Generate modern CMake projects with best practices built-in
Powered by [UV](https://github.com/astral-sh/uv) - the fast Python package manager.
---
## Installation
For normal users, install directly from PyPI using `uv`:
```bash
# 1. Install UV (if you don't have it)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. Install cmake-start from PyPI
uv tool install cmake-start
# 3. Create a project
cmake-init my-project
# 4. Build it
cd my-project
cmake --preset=dev
cmake --build --preset=dev
```
📦 **PyPI Package**: https://pypi.org/project/cmake-start/
---
## Quick Start (Development)
For contributors who want to develop cmake-start:
```bash
# 1. Install UV
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. Clone & Setup
git clone https://github.com/Guo-astro/cmake-start.git
cd cmake-start
./tasks.sh setup
# 3. Create a project
uv run cmake-init my-project
# 4. Build it
cd my-project
cmake --preset=dev
cmake --build --preset=dev
```
---
## Usage
After installing from PyPI:
```bash
# C++ executable (default)
cmake-init my-app
# C++ library
cmake-init -s my-lib
# C++ header-only library
cmake-init -h my-headers
# C project
cmake-init --c my-c-app
# C++20 standard
cmake-init --std 20 my-modern-app
# With Conan/vcpkg
cmake-init -p conan my-app
```
*For development (running from source): prefix commands with `uv run`, e.g., `uv run cmake-init my-app`*
**Important**: Project names must be lowercase (e.g., `my-project`, not `MyProject`)
---
## Code Quality Tools & OpenMP (Strongly Recommended)
**clang-tidy**, **cppcheck**, and **OpenMP** are **enabled by default** for better code quality and performance.
When you run `cmake --preset=dev`, the build system will:
1. Check if clang-tidy, cppcheck, and OpenMP are installed
2. Show detailed installation instructions if missing
3. Continue building (tools disabled if not found)
### Example Output (All Tools Found)
```
✅ Found clang-tidy: /opt/homebrew/bin/clang-tidy
✅ Found cppcheck: /opt/homebrew/bin/cppcheck
⏳ OpenMP check deferred (waiting for project() command)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Code Quality & Performance Tools Status:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ clang-tidy: ENABLED
/opt/homebrew/bin/clang-tidy
✅ cppcheck: ENABLED
/opt/homebrew/bin/cppcheck
❌ OpenMP: ENABLED but NOT FOUND
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ Found OpenMP (post-project check):
C++ version: 4.5
📝 To use OpenMP in your code:
1. Add to CMakeLists.txt:
target_link_libraries(your_target PRIVATE OpenMP::OpenMP_CXX)
2. In your C/C++ code:
#include <omp.h>
#pragma omp parallel for
🎉 All code quality and performance tools are active!
```
### Example Output (Tools Missing)
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ clang-tidy not found - installation instructions:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📦 macOS (Homebrew):
brew install llvm
❄️ Nix (declarative - recommended):
Add to your configuration.nix or home.nix:
home.packages = [ pkgs.clang-tools ];
❄️ Nix (imperative - quick test):
nix-env -iA nixpkgs.clang-tools
# OR with nix profile:
nix profile install nixpkgs#clang-tools
💡 To disable this check:
cmake --preset=dev -DENABLE_clang-tidy=OFF
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
### Installation Guide
<details>
<summary><b>📦 macOS (Homebrew)</b></summary>
```bash
# Code quality tools
brew install llvm cppcheck
# OpenMP for parallel programming
brew install libomp
# Add to PATH if needed:
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
```
</details>
<details>
<summary><b>❄️ Nix (Declarative - Recommended)</b></summary>
Add to your `configuration.nix`, `home.nix`, or `flake.nix`:
```nix
# For system-wide (configuration.nix)
environment.systemPackages = with pkgs; [
clang-tools # clang-tidy
cppcheck
llvmPackages.openmp # OpenMP
# OR use gcc which includes OpenMP
gcc
];
# For home-manager (home.nix)
home.packages = with pkgs; [
clang-tools
cppcheck
llvmPackages.openmp
];
# For flake.nix devShell (recommended for project isolation)
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
cmake
clang-tools
cppcheck
llvmPackages.openmp
];
};
```
Then rebuild:
```bash
# NixOS
sudo nixos-rebuild switch
# home-manager
home-manager switch
# flake devShell
nix develop
```
</details>
<details>
<summary><b>❄️ Nix (Imperative - Quick Test)</b></summary>
```bash
# Traditional nix-env
nix-env -iA nixpkgs.clang-tools nixpkgs.cppcheck nixpkgs.llvmPackages.openmp
# Modern nix profile
nix profile install nixpkgs#clang-tools nixpkgs#cppcheck nixpkgs#llvmPackages.openmp
# Temporary shell (doesn't persist - great for testing)
nix-shell -p clang-tools cppcheck llvmPackages.openmp
```
</details>
<details>
<summary><b>📦 Ubuntu/Debian</b></summary>
```bash
sudo apt update
sudo apt install clang-tidy cppcheck libomp-dev
# OpenMP is also included with GCC:
sudo apt install build-essential
```
</details>
<details>
<summary><b>📦 Fedora</b></summary>
```bash
sudo dnf install clang-tools-extra cppcheck libomp-devel
# OpenMP is also included with GCC:
sudo dnf groupinstall 'Development Tools'
```
</details>
<details>
<summary><b>📦 Arch Linux</b></summary>
```bash
sudo pacman -S clang cppcheck openmp
# Note: OpenMP is included with GCC on Arch
```
</details>
<details>
<summary><b>📦 Windows</b></summary>
```powershell
choco install llvm cppcheck
```
</details>
### Using OpenMP in Your Code
Once OpenMP is detected, you can use it in your project:
```cmake
# In your CMakeLists.txt
target_link_libraries(your_target PRIVATE OpenMP::OpenMP_CXX)
```
```cpp
// In your C++ code
#include <omp.h>
int main() {
#pragma omp parallel for
for (int i = 0; i < 1000; i++) {
// This loop runs in parallel!
process(i);
}
}
```
### Disabling (Not Recommended)
If you want to disable these features:
```bash
cmake --preset=dev -DENABLE_CLANG_TIDY=OFF -DENABLE_CPPCHECK=OFF -DENABLE_OPENMP=OFF
```
---
## Development
### Project Structure
```
cmake-start/
├── cmake-init/ ← EDIT THESE (source of truth)
│ ├── __init__.py
│ ├── __main__.py
│ ├── cmake_init.py
│ ├── template.py
│ └── templates/ ← All CMake templates
│
├── src/cmake_init_lib/ ← Generated by build.py (tracked in git)
│ ├── __init__.py
│ ├── __main__.py
│ ├── cmake_init.py
│ ├── template.py
│ └── templates/ ← Copied from cmake-init/templates/
│
└── build.py ← Copies cmake-init/ → src/
```
### Making Changes
```bash
# 1. Edit source files in cmake-init/
vim cmake-init/cmake_init.py
vim cmake-init/templates/common/cmake/code-quality.cmake
# 2. Rebuild (copies files to src/)
python build.py
# 3. Test your changes
uv run cmake-init test-project
# 4. Commit both cmake-init/ and src/ changes
git add cmake-init/ src/
git commit -m "Your changes"
```
**Single source of truth**: `cmake-init/` directory
**Distribution package**: `src/cmake_init_lib/` (generated by `build.py`)
---
## Common Issues
### "Changes not working"
```bash
python build.py # Run after editing cmake-init/
```
### "Invalid project name"
```bash
# Bad: uv run cmake-init MyProject
# Good: uv run cmake-init my-project
```
### NixOS build errors
```bash
export CXX=clang++
cmake --preset=dev
```
---
## Commands Reference
### For Normal Users (PyPI Installation)
| Command | Description |
|---------|-------------|
| `uv tool install cmake-start` | Install from PyPI |
| `cmake-init my-app` | Create C++ executable |
| `cmake-init -s my-lib` | Create C++ library |
| `cmake-init -h my-headers` | Create header-only library |
| `cmake-init --c my-c-app` | Create C project |
| `cmake-init --std 20 my-app` | Use C++20 |
| `cmake-init -p conan my-app` | Use Conan package manager |
| `cmake-init --version` | Show version |
### For Contributors (Development)
| Command | Description |
|---------|-------------|
| `./tasks.sh setup` | Initial setup |
| `uv run cmake-init my-app` | Create project (from source) |
| `python build.py` | Build after editing templates |
| `python release.py patch` | Release new version to PyPI |
---
## Releasing to PyPI
**One command release:**
```bash
# Option 1: Automatic (commits everything first)
./quick-release.sh patch # 1.0.1 → 1.0.2
# Option 2: Manual (requires clean git)
python release.py patch # 1.0.1 → 1.0.2
```
The script automates:
- ✅ Version bump in pyproject.toml
- ✅ Template sync (build.py)
- ✅ Wheel + source distribution build
- ✅ Git commit & tag
- ✅ PyPI upload
- ✅ GitHub push
**First time setup:**
```bash
# Get PyPI token: https://pypi.org/manage/account/token/
export PYPI_TOKEN='pypi-...'
# OR configure ~/.pypirc (see .pypirc.example)
```
See `RELEASE.md` for detailed documentation.
---
## What Makes This Different?
✅ **Smart code quality** - detects clang-tidy/cppcheck, shows clear install instructions
✅ **Nix-friendly** - proper support for declarative and imperative workflows
✅ **Latest vcpkg** - automatically fetches current baseline hash
✅ **Fast** - powered by UV (10-100x faster than pip)
✅ **Modern** - CMake presets, FetchContent-ready
✅ **Developer-friendly** - helpful error messages, not forced requirements
✅ **Cross-platform** - macOS, Linux, Windows, NixOS, Nix
✅ **Single source** - edit `cmake-init/`, run `build.py`
---
## Links
- [CHANGELOG](CHANGELOG.md) - See what's new!
- [CMake Documentation](https://cmake.org/documentation/)
- [UV Documentation](https://github.com/astral-sh/uv)
- [clang-tidy Docs](https://clang.llvm.org/extra/clang-tidy/)
- [cppcheck Manual](http://cppcheck.sourceforge.net/manual.pdf)
- [OpenMP Specification](https://www.openmp.org/)
- [Report Issues](https://github.com/Guo-astro/cmake-start/issues)
- [Original cmake-init](https://github.com/friendlyanon/cmake-init)
---
**Made with ❤️ for developers who hate boilerplate**
Raw data
{
"_id": null,
"home_page": null,
"name": "cmake-start",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "build-tools, cmake, project-initializer, utilities",
"author": null,
"author_email": "friendlyanon <friendlyanon_@hotmail.com>",
"download_url": "https://files.pythonhosted.org/packages/b8/bd/b204f2fbb2731bedef01dddedb1440bd27d0119f68f7b84420d507c36243/cmake_start-1.0.16.tar.gz",
"platform": null,
"description": "# cmake-init\n\n> \ud83d\ude80 Generate modern CMake projects with best practices built-in\n\nPowered by [UV](https://github.com/astral-sh/uv) - the fast Python package manager.\n\n---\n\n## Installation\n\nFor normal users, install directly from PyPI using `uv`:\n\n```bash\n# 1. Install UV (if you don't have it)\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# 2. Install cmake-start from PyPI\nuv tool install cmake-start\n\n# 3. Create a project\ncmake-init my-project\n\n# 4. Build it\ncd my-project\ncmake --preset=dev\ncmake --build --preset=dev\n```\n\n\ud83d\udce6 **PyPI Package**: https://pypi.org/project/cmake-start/\n\n---\n\n## Quick Start (Development)\n\nFor contributors who want to develop cmake-start:\n\n```bash\n# 1. Install UV\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# 2. Clone & Setup\ngit clone https://github.com/Guo-astro/cmake-start.git\ncd cmake-start\n./tasks.sh setup\n\n# 3. Create a project\nuv run cmake-init my-project\n\n# 4. Build it\ncd my-project\ncmake --preset=dev\ncmake --build --preset=dev\n```\n\n---\n\n## Usage\n\nAfter installing from PyPI:\n\n```bash\n# C++ executable (default)\ncmake-init my-app\n\n# C++ library\ncmake-init -s my-lib\n\n# C++ header-only library\ncmake-init -h my-headers\n\n# C project\ncmake-init --c my-c-app\n\n# C++20 standard\ncmake-init --std 20 my-modern-app\n\n# With Conan/vcpkg\ncmake-init -p conan my-app\n```\n\n*For development (running from source): prefix commands with `uv run`, e.g., `uv run cmake-init my-app`*\n\n**Important**: Project names must be lowercase (e.g., `my-project`, not `MyProject`)\n\n---\n\n## Code Quality Tools & OpenMP (Strongly Recommended)\n\n**clang-tidy**, **cppcheck**, and **OpenMP** are **enabled by default** for better code quality and performance.\n\nWhen you run `cmake --preset=dev`, the build system will:\n1. Check if clang-tidy, cppcheck, and OpenMP are installed\n2. Show detailed installation instructions if missing\n3. Continue building (tools disabled if not found)\n\n### Example Output (All Tools Found)\n\n```\n\u2705 Found clang-tidy: /opt/homebrew/bin/clang-tidy\n\u2705 Found cppcheck: /opt/homebrew/bin/cppcheck\n\u23f3 OpenMP check deferred (waiting for project() command)\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\ud83d\udcca Code Quality & Performance Tools Status:\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n \u2705 clang-tidy: ENABLED\n /opt/homebrew/bin/clang-tidy\n \u2705 cppcheck: ENABLED\n /opt/homebrew/bin/cppcheck\n \u274c OpenMP: ENABLED but NOT FOUND\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n\u2705 Found OpenMP (post-project check):\n C++ version: 4.5\n\n\ud83d\udcdd To use OpenMP in your code:\n 1. Add to CMakeLists.txt:\n target_link_libraries(your_target PRIVATE OpenMP::OpenMP_CXX)\n 2. In your C/C++ code:\n #include <omp.h>\n #pragma omp parallel for\n\n\ud83c\udf89 All code quality and performance tools are active!\n```\n\n### Example Output (Tools Missing)\n\n```\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\u26a0\ufe0f clang-tidy not found - installation instructions:\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\n\ud83d\udce6 macOS (Homebrew):\n brew install llvm\n\n\u2744\ufe0f Nix (declarative - recommended):\n Add to your configuration.nix or home.nix:\n home.packages = [ pkgs.clang-tools ];\n\n\u2744\ufe0f Nix (imperative - quick test):\n nix-env -iA nixpkgs.clang-tools\n # OR with nix profile:\n nix profile install nixpkgs#clang-tools\n\n\ud83d\udca1 To disable this check:\n cmake --preset=dev -DENABLE_clang-tidy=OFF\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n```\n\n### Installation Guide\n\n<details>\n<summary><b>\ud83d\udce6 macOS (Homebrew)</b></summary>\n\n```bash\n# Code quality tools\nbrew install llvm cppcheck\n\n# OpenMP for parallel programming\nbrew install libomp\n\n# Add to PATH if needed:\nexport PATH=\"/opt/homebrew/opt/llvm/bin:$PATH\"\n```\n</details>\n\n<details>\n<summary><b>\u2744\ufe0f Nix (Declarative - Recommended)</b></summary>\n\nAdd to your `configuration.nix`, `home.nix`, or `flake.nix`:\n\n```nix\n# For system-wide (configuration.nix)\nenvironment.systemPackages = with pkgs; [\n clang-tools # clang-tidy\n cppcheck\n llvmPackages.openmp # OpenMP\n # OR use gcc which includes OpenMP\n gcc\n];\n\n# For home-manager (home.nix)\nhome.packages = with pkgs; [\n clang-tools\n cppcheck\n llvmPackages.openmp\n];\n\n# For flake.nix devShell (recommended for project isolation)\ndevShells.default = pkgs.mkShell {\n buildInputs = with pkgs; [\n cmake\n clang-tools\n cppcheck\n llvmPackages.openmp\n ];\n};\n```\n\nThen rebuild:\n```bash\n# NixOS\nsudo nixos-rebuild switch\n\n# home-manager\nhome-manager switch\n\n# flake devShell\nnix develop\n```\n</details>\n\n<details>\n<summary><b>\u2744\ufe0f Nix (Imperative - Quick Test)</b></summary>\n\n```bash\n# Traditional nix-env\nnix-env -iA nixpkgs.clang-tools nixpkgs.cppcheck nixpkgs.llvmPackages.openmp\n\n# Modern nix profile\nnix profile install nixpkgs#clang-tools nixpkgs#cppcheck nixpkgs#llvmPackages.openmp\n\n# Temporary shell (doesn't persist - great for testing)\nnix-shell -p clang-tools cppcheck llvmPackages.openmp\n```\n</details>\n\n<details>\n<summary><b>\ud83d\udce6 Ubuntu/Debian</b></summary>\n\n```bash\nsudo apt update\nsudo apt install clang-tidy cppcheck libomp-dev\n\n# OpenMP is also included with GCC:\nsudo apt install build-essential\n```\n</details>\n\n<details>\n<summary><b>\ud83d\udce6 Fedora</b></summary>\n\n```bash\nsudo dnf install clang-tools-extra cppcheck libomp-devel\n\n# OpenMP is also included with GCC:\nsudo dnf groupinstall 'Development Tools'\n```\n</details>\n\n<details>\n<summary><b>\ud83d\udce6 Arch Linux</b></summary>\n\n```bash\nsudo pacman -S clang cppcheck openmp\n\n# Note: OpenMP is included with GCC on Arch\n```\n</details>\n\n<details>\n<summary><b>\ud83d\udce6 Windows</b></summary>\n\n```powershell\nchoco install llvm cppcheck\n```\n</details>\n\n### Using OpenMP in Your Code\n\nOnce OpenMP is detected, you can use it in your project:\n\n```cmake\n# In your CMakeLists.txt\ntarget_link_libraries(your_target PRIVATE OpenMP::OpenMP_CXX)\n```\n\n```cpp\n// In your C++ code\n#include <omp.h>\n\nint main() {\n #pragma omp parallel for\n for (int i = 0; i < 1000; i++) {\n // This loop runs in parallel!\n process(i);\n }\n}\n```\n\n### Disabling (Not Recommended)\n\nIf you want to disable these features:\n```bash\ncmake --preset=dev -DENABLE_CLANG_TIDY=OFF -DENABLE_CPPCHECK=OFF -DENABLE_OPENMP=OFF\n```\n\n---\n\n## Development\n\n### Project Structure\n\n```\ncmake-start/\n\u251c\u2500\u2500 cmake-init/ \u2190 EDIT THESE (source of truth)\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 __main__.py\n\u2502 \u251c\u2500\u2500 cmake_init.py\n\u2502 \u251c\u2500\u2500 template.py\n\u2502 \u2514\u2500\u2500 templates/ \u2190 All CMake templates\n\u2502\n\u251c\u2500\u2500 src/cmake_init_lib/ \u2190 Generated by build.py (tracked in git)\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 __main__.py\n\u2502 \u251c\u2500\u2500 cmake_init.py\n\u2502 \u251c\u2500\u2500 template.py\n\u2502 \u2514\u2500\u2500 templates/ \u2190 Copied from cmake-init/templates/\n\u2502\n\u2514\u2500\u2500 build.py \u2190 Copies cmake-init/ \u2192 src/\n```\n\n### Making Changes\n\n```bash\n# 1. Edit source files in cmake-init/\nvim cmake-init/cmake_init.py\nvim cmake-init/templates/common/cmake/code-quality.cmake\n\n# 2. Rebuild (copies files to src/)\npython build.py\n\n# 3. Test your changes\nuv run cmake-init test-project\n\n# 4. Commit both cmake-init/ and src/ changes\ngit add cmake-init/ src/\ngit commit -m \"Your changes\"\n```\n\n**Single source of truth**: `cmake-init/` directory\n**Distribution package**: `src/cmake_init_lib/` (generated by `build.py`)\n\n---\n\n## Common Issues\n\n### \"Changes not working\"\n```bash\npython build.py # Run after editing cmake-init/\n```\n\n### \"Invalid project name\"\n```bash\n# Bad: uv run cmake-init MyProject\n# Good: uv run cmake-init my-project\n```\n\n### NixOS build errors\n```bash\nexport CXX=clang++\ncmake --preset=dev\n```\n\n---\n\n## Commands Reference\n\n### For Normal Users (PyPI Installation)\n\n| Command | Description |\n|---------|-------------|\n| `uv tool install cmake-start` | Install from PyPI |\n| `cmake-init my-app` | Create C++ executable |\n| `cmake-init -s my-lib` | Create C++ library |\n| `cmake-init -h my-headers` | Create header-only library |\n| `cmake-init --c my-c-app` | Create C project |\n| `cmake-init --std 20 my-app` | Use C++20 |\n| `cmake-init -p conan my-app` | Use Conan package manager |\n| `cmake-init --version` | Show version |\n\n### For Contributors (Development)\n\n| Command | Description |\n|---------|-------------|\n| `./tasks.sh setup` | Initial setup |\n| `uv run cmake-init my-app` | Create project (from source) |\n| `python build.py` | Build after editing templates |\n| `python release.py patch` | Release new version to PyPI |\n\n---\n\n## Releasing to PyPI\n\n**One command release:**\n\n```bash\n# Option 1: Automatic (commits everything first)\n./quick-release.sh patch # 1.0.1 \u2192 1.0.2\n\n# Option 2: Manual (requires clean git)\npython release.py patch # 1.0.1 \u2192 1.0.2\n```\n\nThe script automates:\n- \u2705 Version bump in pyproject.toml\n- \u2705 Template sync (build.py)\n- \u2705 Wheel + source distribution build\n- \u2705 Git commit & tag\n- \u2705 PyPI upload\n- \u2705 GitHub push\n\n**First time setup:**\n```bash\n# Get PyPI token: https://pypi.org/manage/account/token/\nexport PYPI_TOKEN='pypi-...'\n# OR configure ~/.pypirc (see .pypirc.example)\n```\n\nSee `RELEASE.md` for detailed documentation.\n\n---\n\n## What Makes This Different?\n\n\u2705 **Smart code quality** - detects clang-tidy/cppcheck, shows clear install instructions\n\u2705 **Nix-friendly** - proper support for declarative and imperative workflows\n\u2705 **Latest vcpkg** - automatically fetches current baseline hash\n\u2705 **Fast** - powered by UV (10-100x faster than pip)\n\u2705 **Modern** - CMake presets, FetchContent-ready\n\u2705 **Developer-friendly** - helpful error messages, not forced requirements\n\u2705 **Cross-platform** - macOS, Linux, Windows, NixOS, Nix\n\u2705 **Single source** - edit `cmake-init/`, run `build.py` \n\n---\n\n## Links\n\n- [CHANGELOG](CHANGELOG.md) - See what's new!\n- [CMake Documentation](https://cmake.org/documentation/)\n- [UV Documentation](https://github.com/astral-sh/uv)\n- [clang-tidy Docs](https://clang.llvm.org/extra/clang-tidy/)\n- [cppcheck Manual](http://cppcheck.sourceforge.net/manual.pdf)\n- [OpenMP Specification](https://www.openmp.org/)\n- [Report Issues](https://github.com/Guo-astro/cmake-start/issues)\n- [Original cmake-init](https://github.com/friendlyanon/cmake-init)\n\n---\n\n**Made with \u2764\ufe0f for developers who hate boilerplate**\n",
"bugtrack_url": null,
"license": "GPL-3.0-or-later",
"summary": "The missing CMake project initializer",
"version": "1.0.16",
"project_urls": {
"Homepage": "https://github.com/friendlyanon/cmake-init",
"Issues": "https://github.com/friendlyanon/cmake-init/issues",
"Repository": "https://github.com/friendlyanon/cmake-init"
},
"split_keywords": [
"build-tools",
" cmake",
" project-initializer",
" utilities"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "6ebd05b65f25620663b2aaaed6851faa80b4a4f66f0e48ecfd10b870452b8fe4",
"md5": "55c97b11be0e16a81665037c6bae4658",
"sha256": "fe62d24cd7330de4eab1f83d377267fad1d0317b08dc86b9f6e8b9232389b786"
},
"downloads": -1,
"filename": "cmake_start-1.0.16-py3-none-any.whl",
"has_sig": false,
"md5_digest": "55c97b11be0e16a81665037c6bae4658",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 87266,
"upload_time": "2025-10-13T08:53:50",
"upload_time_iso_8601": "2025-10-13T08:53:50.711457Z",
"url": "https://files.pythonhosted.org/packages/6e/bd/05b65f25620663b2aaaed6851faa80b4a4f66f0e48ecfd10b870452b8fe4/cmake_start-1.0.16-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b8bdb204f2fbb2731bedef01dddedb1440bd27d0119f68f7b84420d507c36243",
"md5": "17cd802c7e4d391ba6741b754d3167e8",
"sha256": "25cebc401644c0b32270e20d5970c25ddf11b8fe9580c8bd075b5795d1f2bea0"
},
"downloads": -1,
"filename": "cmake_start-1.0.16.tar.gz",
"has_sig": false,
"md5_digest": "17cd802c7e4d391ba6741b754d3167e8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 98547,
"upload_time": "2025-10-13T08:53:52",
"upload_time_iso_8601": "2025-10-13T08:53:52.245253Z",
"url": "https://files.pythonhosted.org/packages/b8/bd/b204f2fbb2731bedef01dddedb1440bd27d0119f68f7b84420d507c36243/cmake_start-1.0.16.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-13 08:53:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "friendlyanon",
"github_project": "cmake-init",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "cmake-start"
}