Files
dcr/CONTRIBUTING.md
Dexoron fd88e036ed 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.
2026-04-11 13:36:18 +08:00

1.7 KiB

Contributing

Thanks for your interest in the project.

Requirements

  • Use Rust stable.
  • Before opening a PR, the code must pass formatting, linting, and build.

Quick Start

git clone https://github.com/dexoron/dcr.git
cd dcr
cargo check

Code Style

  • Format code with cargo fmt.
  • Check warnings with cargo clippy.
  • Keep functions small and focused.
  • Prefer clear names over clever ones.

Target System

DCR supports cross-compilation via --target <triple> or short names:

  • dcr build --target linux --release (maps to x86_64-unknown-linux-gnu)
  • dcr build --target macos --release (maps to x86_64-apple-darwin)
  • dcr build --target windows --release (maps to x86_64-pc-windows-msvc)
  • Full triples: dcr build --target aarch64-linux-gnu --release
  • Configure multiple targets in dcr.toml:
    [build.targets]
    targets = ["linux", "macos"]
    
    [build.linux]
    compiler = "gcc"
    
    [build.macos]
    compiler = "clang"
    
  • If no --target, builds for targets in build.targets or native if empty.

Checks

Before PR, run:

cargo fmt --all
cargo clippy --all-targets --all-features -- -D warnings
cargo check
cargo test

CI/CD and Releases

  • CI: .github/workflows/ci.yml
  • Release: .github/workflows/release.yml
  • Releases are triggered by tags v* and publish binaries for:
  • x86_64-unknown-linux-gnu
  • x86_64-apple-darwin
  • aarch64-apple-darwin
  • x86_64-pc-windows-msvc

Commits and PRs

  • Write clear commit messages.
  • In PRs, include a short description and rationale.
  • Update documentation when behavior changes.

Questions

If anything is unclear, open an issue or ask in the PR.

You can also reach out directly: