mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-22 01:09:37 +00:00
New docs
This commit is contained in:
@@ -1,2 +1,39 @@
|
||||
# Build profiles
|
||||
|
||||
DCR supports two profiles:
|
||||
|
||||
- `debug` (default)
|
||||
- `release`
|
||||
|
||||
## How to select
|
||||
|
||||
```sh
|
||||
dcr build --debug
|
||||
dcr build --release
|
||||
dcr run --release
|
||||
dcr clean --debug
|
||||
```
|
||||
|
||||
## Default profile flags
|
||||
|
||||
### GCC/Clang-like toolchains
|
||||
|
||||
- `debug`: `-O0 -g -Wall -Wextra -fno-omit-frame-pointer -DDEBUG`
|
||||
- `release`: `-O3 -DNDEBUG -march=native`
|
||||
|
||||
### MSVC toolchain
|
||||
|
||||
- `debug`: `/Od /Zi /W4 /DDEBUG /Oy-`
|
||||
- `release`: `/O2 /DNDEBUG`
|
||||
|
||||
## Artifacts
|
||||
|
||||
By default:
|
||||
|
||||
- `target/debug/<name>` (or `.exe` on Windows)
|
||||
- `target/release/<name>` (or `.exe` on Windows)
|
||||
|
||||
Static library mode (`kind = "staticlib"`):
|
||||
|
||||
- Linux/macOS: `lib<name>.a`
|
||||
- Windows: `<name>.lib`
|
||||
|
||||
@@ -1,2 +1,31 @@
|
||||
# Build section
|
||||
|
||||
## Schema
|
||||
|
||||
```toml
|
||||
[build]
|
||||
language = "c"
|
||||
standard = "c11"
|
||||
compiler = "clang"
|
||||
kind = "bin"
|
||||
# optional:
|
||||
# target = "./dist"
|
||||
# cflags = ["-Wall"]
|
||||
# ldflags = ["-lm"]
|
||||
```
|
||||
|
||||
## Fields
|
||||
|
||||
- `language` (string, required): `c`, `c++`, `cpp`, or `cxx`.
|
||||
- `standard` (string, required): language standard passed to compiler.
|
||||
- `compiler` (string, required): compiler command (for example `clang`, `gcc`, `cl`).
|
||||
- `kind` (string, required): `bin` or `staticlib`.
|
||||
- `target` (string, optional): custom output directory for final artifact.
|
||||
- `cflags` (string array, optional): extra compile flags.
|
||||
- `ldflags` (string array, optional): extra link flags.
|
||||
|
||||
## Behavior notes
|
||||
|
||||
- Compiler backend is selected by compiler string (`gcc`, `clang`, `cl`, `clang-cl`).
|
||||
- Empty or unknown compiler value falls back to clang-like build path.
|
||||
- `run` is not allowed for `kind = "staticlib"`.
|
||||
|
||||
@@ -1,2 +1,45 @@
|
||||
# dcr.toml overview
|
||||
|
||||
`dcr.toml` is the main project file used by DCR.
|
||||
|
||||
## Minimal generated template
|
||||
|
||||
```toml
|
||||
[package]
|
||||
name = "hello"
|
||||
version = "0.1.0"
|
||||
|
||||
[build]
|
||||
language = "c"
|
||||
standard = "c11"
|
||||
compiler = "clang"
|
||||
kind = "bin"
|
||||
|
||||
[dependencies]
|
||||
```
|
||||
|
||||
`dcr new` and `dcr init` generate this structure automatically.
|
||||
|
||||
## Required sections
|
||||
|
||||
- `[package]`
|
||||
- `[build]`
|
||||
- `[dependencies]`
|
||||
|
||||
## Required keys
|
||||
|
||||
- `package.name`
|
||||
- `package.version`
|
||||
- `build.language`
|
||||
- `build.standard`
|
||||
- `build.compiler`
|
||||
- `build.kind`
|
||||
|
||||
`build.kind` must be either `bin` or `staticlib`.
|
||||
|
||||
## Optional keys
|
||||
|
||||
- `build.target`
|
||||
- `build.cflags`
|
||||
- `build.ldflags`
|
||||
- dependency fields (`include`, `lib`, `libs`, `system`)
|
||||
|
||||
@@ -1,2 +1,30 @@
|
||||
# Dependencies section
|
||||
|
||||
DCR currently supports path dependencies.
|
||||
|
||||
## Example
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
frecli = { path = "./lib/frecli", include = ["."], lib = ["."], libs = ["frecli"] }
|
||||
```
|
||||
|
||||
## Supported fields per dependency
|
||||
|
||||
- `path` (string, required): absolute path or path relative to project root.
|
||||
- `include` (string array, optional): include directories inside dependency.
|
||||
- `lib` (string array, optional): library directories inside dependency.
|
||||
- `libs` (string array, optional): library names for linker.
|
||||
- `system` (bool, optional): currently `system = true` is rejected.
|
||||
|
||||
## Defaults
|
||||
|
||||
- If `include` is omitted, DCR tries `<dep>/include`.
|
||||
- If `lib` is omitted, DCR tries `<dep>/lib`, then `<dep>/lib64`.
|
||||
- If `libs` is omitted, dependency key name is used.
|
||||
|
||||
## Validation
|
||||
|
||||
- Dependency value must be a TOML table.
|
||||
- `path` is mandatory.
|
||||
- `include`/`lib`/`libs` must be arrays of strings if provided.
|
||||
|
||||
@@ -1,2 +1,20 @@
|
||||
# Package section
|
||||
|
||||
## Schema
|
||||
|
||||
```toml
|
||||
[package]
|
||||
name = "my-app"
|
||||
version = "0.1.0"
|
||||
```
|
||||
|
||||
## Fields
|
||||
|
||||
- `name` (string, required): used as output artifact base name.
|
||||
- `version` (string, required): used in `dcr.lock` project entry.
|
||||
|
||||
## Notes
|
||||
|
||||
- Empty `name` or `version` makes config invalid.
|
||||
- `dcr new` sets `name` from the passed project name.
|
||||
- `dcr init` sets `name` from current directory name.
|
||||
|
||||
Reference in New Issue
Block a user