mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 13:08:29 +00:00
feat: add cross-compilation support with --target flag
- Updated build and run commands to accept a --target option for specifying target platforms. - Enhanced documentation to include cross-compilation usage and supported targets. - Modified configuration to allow target-specific settings and toolchains. - Introduced a new test command to run project tests with specified profiles and targets. - Improved handling of target directories and output structure for different platforms. - Added support for multiple targets in the configuration file. - Implemented inheritance for workspace and dependencies based on target and profile.
This commit is contained in:
@@ -8,6 +8,7 @@ Debug (default):
|
||||
dcr build
|
||||
# or
|
||||
dcr build --debug
|
||||
dcr build --target linux --debug
|
||||
dcr build --debug --clean
|
||||
```
|
||||
|
||||
@@ -15,6 +16,7 @@ Release:
|
||||
|
||||
```sh
|
||||
dcr build --release
|
||||
dcr build --target windows --release
|
||||
```
|
||||
|
||||
## Run
|
||||
@@ -22,7 +24,9 @@ dcr build --release
|
||||
```sh
|
||||
dcr run
|
||||
# or
|
||||
dcr run --target macos
|
||||
dcr run --release
|
||||
dcr run --target linux --release
|
||||
dcr run --release --force
|
||||
```
|
||||
|
||||
@@ -49,4 +53,5 @@ dcr clean --release --all
|
||||
- Build profile flag (`--debug` / `--release`) can be passed in any argument position.
|
||||
- Unknown profile flags produce an error.
|
||||
- In workspace root, `clean --all` cleans all member projects.
|
||||
- `--clean` for `build`/`run` removes `target/<profile>` and paths from `build.clean`.
|
||||
- `--target` builds/runs for specified target (short names: `linux`, `macos`, `windows`).
|
||||
- `--clean` for `build`/`run` removes `target/<target>/<profile>` and paths from `build.clean`.
|
||||
|
||||
@@ -31,10 +31,10 @@ project/
|
||||
- `dcr.toml`: main project configuration.
|
||||
- `dcr.lock`: generated lock file for resolved path dependencies.
|
||||
- `src/`: recursively scanned source directory.
|
||||
- `target/<profile>/obj/`: cached object files for incremental rebuild.
|
||||
- `target/<profile>/deps/`: synchronized copies of path dependencies.
|
||||
- `target/<profile>/<name>` (or `.exe` on Windows): output for `kind = "bin"`.
|
||||
- `target/<profile>/lib<name>.a` (or `<name>.lib` on Windows): output for `kind = "staticlib"`.
|
||||
- `target/<profile>/lib<name>.so` (or `.dylib` on macOS, `<name>.dll` on Windows): output for `kind = "sharedlib"`.
|
||||
- `target/<target>/<profile>/obj/`: cached object files for incremental rebuild (where `<target>` is `native` or target triple).
|
||||
- `target/<target>/<profile>/deps/`: synchronized copies of path dependencies.
|
||||
- `target/<target>/<profile>/<name>` (or `.exe` on Windows): output for `kind = "bin"`.
|
||||
- `target/<target>/<profile>/lib<name>.a` (or `<name>.lib` on Windows): output for `kind = "staticlib"`.
|
||||
- `target/<target>/<profile>/lib<name>.so` (or `.dylib` on macOS, `<name>.dll` on Windows): output for `kind = "sharedlib"`.
|
||||
|
||||
If `build.target` is set, the final artifact is written to that custom directory, while object cache still stays in `target/<profile>/obj`.
|
||||
If `build.target` is set, the final artifact is written to that custom directory, while object cache still stays in `target/<target>/<profile>/obj`.
|
||||
|
||||
Reference in New Issue
Block a user