cmake-start


Namecmake-start JSON
Version 1.0.16 PyPI version JSON
download
home_pageNone
SummaryThe missing CMake project initializer
upload_time2025-10-13 08:53:52
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseGPL-3.0-or-later
keywords build-tools cmake project-initializer utilities
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 1.82430s