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.
82 lines
2.5 KiB
82 lines
2.5 KiB
# cmkr
|
|
|
|
cmkr, pronounced "cmaker", is A CMakeLists.txt generator from TOML.
|
|
|
|
See the [cmkr topic](https://github.com/topics/cmkr) for examples. Feel free to add the `cmkr` topic to your projects if you used cmkr!
|
|
|
|
## Building
|
|
|
|
cmkr requires a C++11 compiler, cmake >= 3.15.
|
|
|
|
```
|
|
git clone https://github.com/moalyousef/cmkr
|
|
cd cmkr
|
|
cmake -Bbin
|
|
cmake --build bin --parallel
|
|
```
|
|
|
|
## Usage
|
|
|
|
cmkr parses cmake.toml files (using toml11 by Toru Niina) at the project directory. A basic hello world format with the minimum required fields:
|
|
|
|
```toml
|
|
[cmake]
|
|
minimum = "3.15"
|
|
|
|
[project]
|
|
name = "app"
|
|
version = "0.1.0"
|
|
|
|
[target.app]
|
|
type = "executable"
|
|
sources = ["src/main.cpp"]
|
|
```
|
|
|
|
**NOTE**: The documentation is currently a work-in-progress due to breaking changes since `0.1.4`. For examples you can check the [cmkr topic](https://github.com/topics/cmkr).
|
|
|
|
The cmkr executable can be run from the command-line:
|
|
|
|
```
|
|
Usage: cmkr [arguments]
|
|
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.
|
|
```
|
|
|
|
The build command invokes cmake and the default build-system on your platform (unless a generator is specified), it also accepts extra cmake build arguments:
|
|
|
|
```
|
|
cmkr build --config Release
|
|
```
|
|
|
|
## Binary types
|
|
|
|
### executable
|
|
|
|
Executable binary. Equivalent to [add_executable(name)](https://cmake.org/cmake/help/latest/command/add_executable.html).
|
|
|
|
### library
|
|
|
|
Library, can be static or shared depending on the BUILD_SHARED_LIBS variable. Equivalent to [add_library()](https://cmake.org/cmake/help/latest/command/add_library.html).
|
|
|
|
### static
|
|
|
|
Static library/archive. Equivalent to [add_library(name STATIC)](https://cmake.org/cmake/help/latest/command/add_library.html).
|
|
|
|
### shared
|
|
|
|
Shared/dynamic library. Equivalent to [add_library(name SHARED)](https://cmake.org/cmake/help/latest/command/add_library.html).
|
|
|
|
### interface
|
|
|
|
Header-only library. Equivalent to [add_library(name INTERFACE)](https://cmake.org/cmake/help/latest/command/add_library.html).
|
|
|
|
## Roadmap
|
|
|
|
- Support more cmake fields.
|