You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Duncan Ogilvie 47703871e1 Bump to 0.2.6 6 months ago
.github Document template targets 6 months ago
cmake Bump to 0.2.6 6 months ago
docs Document template targets 6 months ago
include Final touches 6 months ago
src Final touches 6 months ago
tests Document template targets 6 months ago
third_party prelim vcpkg manifest support 1 year ago
.clang-format WIP DSL for generating cmake 1 year ago
.gitattributes Merge cmkrlib into the cmkr target 1 year ago
.gitignore Fix warnings on AppleClang 12 1 year ago
CMakeLists.txt Bump to 0.2.6 6 months ago
LICENSE Create LICENSE 2 years ago Improve onboarding experience 6 months ago
cmake.toml Bump to 0.2.6 6 months ago


cmkr, pronounced "cmaker", is a modern build system based on CMake and TOML.

cmkr parses cmake.toml files and generates a modern, idiomatic CMakeLists.txt for you. A minimal example:

name = "cmkr_for_beginners"

type = "executable"
sources = ["src/main.cpp"]

cmkr can bootstrap itself from CMake and you only need CMake to use it.

Getting started

To get started run the following commands from your project directory:

curl -o cmkr.cmake
cmake -P cmkr.cmake

After the bootstrapping process finishes, modify cmake.toml and open the project in your favorite IDE or build with CMake:

cmake -B build
cmake --build build

Once bootstrapped, cmkr does not introduce extra steps to your workflow. After modifying cmake.toml you simply build/configure your CMake project and cmkr will automatically regenerate CMakeLists.txt.

In CI settings the cmkr bootstrapping process is skipped so there is no extra configure-time overhead in your pipelines.

Template repositories

Another way to get started is to use the cmkr_for_beginners template repository. Either open it in Gitpod, or clone the repository and run:

cmake -B build
cmake --build build

Check out the cmkr topic, the build-cpp organization or the tests for more examples and templates.

Command line

Optionally you can put a cmkr release in your PATH and use it as a utility from the command line:

Usage: cmkr [arguments]
    init    [executable|library|shared|static|interface] Starts a new project in the same directory.
    gen                                                  Generates CMakeLists.txt file.
    build   <extra cmake args>                           Run cmake and build.
    install                                              Run cmake --install. Needs admin privileges.
    clean                                                Clean the build directory.
    help                                                 Show help.
    version                                              Current cmkr version.