Build Scripts and Tools¶
The Nexus project includes a comprehensive set of Python scripts for building, testing, formatting, cleaning, and generating documentation. This guide covers all available scripts and their usage.
概述¶
All scripts are located in the scripts/ directory and can be invoked directly or through the unified nexus.py entry point.
Script Organization¶
scripts/
├── nexus.py # Unified entry point
├── nexus.sh # Bash wrapper
├── nexus.ps1 # PowerShell wrapper
├── nexus.bat # Windows batch wrapper
├── setup/
│ └── setup.py # Environment setup
├── building/
│ └── build.py # Build script
├── test/
│ └── test.py # Test runner
├── tools/
│ ├── format.py # Code formatter
│ ├── clean.py # Cleanup script
│ └── docs.py # Documentation generator
├── ci/
│ └── ci_build.py # CI pipeline
├── Kconfig/
│ ├── generate_config.py # Config generator
│ ├── validate_kconfig.py # Config validator
│ └── kconfig_migrate.py # Config migration
├── coverage/
│ ├── run_coverage_linux.sh # Linux coverage
│ └── run_coverage_windows.ps1 # Windows coverage
└── validation/
└── validate.py # System validation
Unified Entry Point¶
nexus.py¶
The nexus.py script provides a unified interface to all project operations.
Usage:
python nexus.py <command> [arguments...]
Commands:
setup- Environment setup and configurationbuild- Build the projecttest- Run testsformat- Format source codeclean- Clean build artifactsdocs- Generate documentationci- Run CI pipelinehelp- Show help information
Options:
--list- List all available commands--version- Show version information--help- Show help information
Examples:
# Show version
python nexus.py --version
# List commands
python nexus.py --list
# Setup development environment
python nexus.py setup --dev --docs
# Build in Release mode
python nexus.py build --type release
# Run tests with verbose output
python nexus.py test --verbose
# Format code
python nexus.py format --check
# Clean all artifacts
python nexus.py clean --all
# Generate documentation
python nexus.py docs --target all
# Run CI pipeline
python nexus.py ci --stage all --coverage
Platform-Specific Wrappers¶
Bash (Linux/macOS):
./scripts/nexus.sh build --type release
PowerShell (Windows):
.\scripts\nexus.ps1 build --type release
Batch (Windows):
scripts\nexus.bat build --type release
构建 Scripts¶
build.py¶
Located at scripts/building/build.py, this script builds the project using CMake.
Usage:
python scripts/building/build.py [options]
Options:
选项 |
描述 |
|---|---|
|
Build type: debug, release, relwithdebinfo, minsizerel (default: debug) |
|
Target platform: native, stm32f4, stm32h7, ESP32, nrf52 (default: native) |
|
OSAL backend: baremetal, FreeRTOS, rtthread, zephyr (default: baremetal) |
|
Build directory (default: build-<type>) |
|
清理 before building |
|
Build tests (default: ON for native, OFF for embedded) |
|
Build examples (default: ON) |
|
Build documentation (default: OFF) |
|
Enable code coverage (default: OFF) |
|
Number of parallel jobs (default: CPU count) |
|
详细输出 |
|
Show help message |
Examples:
# Debug build for native platform
python scripts/building/build.py
# Release build for STM32F4
python scripts/building/build.py --type release --platform stm32f4
# Build with FreeRTOS
python scripts/building/build.py --osal FreeRTOS
# Clean build with tests and coverage
python scripts/building/build.py --clean --tests --coverage
# Parallel build with 8 jobs
python scripts/building/build.py --jobs 8
# Verbose build
python scripts/building/build.py --verbose
测试 Scripts¶
test.py¶
Located at scripts/test/test.py, this script runs unit tests using CTest and GoogleTest.
Usage:
python scripts/test/test.py [options]
Options:
选项 |
描述 |
|---|---|
|
Test filter pattern (default: *) |
|
详细输出 |
|
Generate XML report |
|
Build directory (default: build-Debug) |
|
Show help message |
Examples:
# Run all tests
python scripts/test/test.py
# Run specific test suite
python scripts/test/test.py --filter "ConfigTest.\*"
# Run with verbose output
python scripts/test/test.py --verbose
# Generate XML report
python scripts/test/test.py --xml test_results.xml
# Use custom build directory
python scripts/test/test.py --build-dir build-Release
Test Filters:
GoogleTest filter patterns:
*- All testsTestSuite.*- All tests in TestSuiteTestSuite.TestName- Specific test*Math*- All tests containing "Math"TestSuite.*:-TestSuite.SkipThis- All except SkipThis
代码格式化¶
format.py¶
Located at scripts/tools/format.py, this script formats C/C++ code using clang-format.
Usage:
python scripts/tools/format.py [options]
Options:
选项 |
描述 |
|---|---|
|
Check formatting without modifying files |
|
Fix formatting issues (default) |
|
Specific paths to format (default: all) |
|
详细输出 |
|
Show help message |
Examples:
# Format all code
python scripts/tools/format.py
# Check formatting without changes
python scripts/tools/format.py --check
# Format specific directory
python scripts/tools/format.py --paths hal/
# Format multiple paths
python scripts/tools/format.py --paths hal/ osal/ framework/
Configuration:
Formatting rules are defined in .clang-format at the project root.
Cleanup Scripts¶
clean.py¶
Located at scripts/tools/clean.py, this script cleans build artifacts.
Usage:
python scripts/tools/clean.py [options]
Options:
选项 |
描述 |
|---|---|
|
Clean all build directories |
|
Specific build directory to clean |
|
清理 documentation artifacts |
|
清理 coverage data |
|
清理 CMake cache |
|
详细输出 |
|
Show help message |
Examples:
# Clean default build directory
python scripts/tools/clean.py
# Clean all build directories
python scripts/tools/clean.py --all
# Clean specific build directory
python scripts/tools/clean.py --build-dir build-Release
# Clean documentation
python scripts/tools/clean.py --docs
# Clean coverage data
python scripts/tools/clean.py --coverage
# Clean everything
python scripts/tools/clean.py --all --docs --coverage
Documentation Scripts¶
docs.py¶
Located at scripts/tools/docs.py, this script generates documentation using Doxygen and Sphinx.
Usage:
python scripts/tools/docs.py [options]
Options:
选项 |
描述 |
|---|---|
|
Target: doxygen, sphinx, or all (default: all) |
|
详细输出 |
|
Show help message |
Examples:
# Generate all documentation
python scripts/tools/docs.py
# Generate only Doxygen API docs
python scripts/tools/docs.py --target doxygen
# Generate only Sphinx user docs
python scripts/tools/docs.py --target sphinx
# Verbose output
python scripts/tools/docs.py --verbose
Output Locations:
Doxygen:
docs/api/html/index.htmlSphinx:
docs/sphinx/_build/html/index.html
Kconfig Tools¶
generate_config.py¶
Located at scripts/Kconfig/generate_config.py, this script generates configuration headers from Kconfig.
Usage:
python scripts/Kconfig/generate_config.py [options]
Options:
选项 |
描述 |
|---|---|
|
Input .config file |
|
Output header file (default: nexus_config.h) |
|
Generate default configuration |
|
Launch interactive menuconfig |
|
Show help message |
Examples:
# Generate from .config
python scripts/Kconfig/generate_config.py --config .config --output nexus_config.h
# Generate default configuration
python scripts/Kconfig/generate_config.py --default --output nexus_config.h
# Launch menuconfig
python scripts/Kconfig/generate_config.py --menuconfig
validate_kconfig.py¶
Located at scripts/Kconfig/validate_kconfig.py, this script validates Kconfig files and configurations.
Usage:
python scripts/Kconfig/validate_kconfig.py [options]
Options:
选项 |
描述 |
|---|---|
|
Configuration file to validate |
|
Kconfig file to validate (default: Kconfig) |
|
Strict validation mode |
|
Show help message |
Examples:
# Validate .config
python scripts/Kconfig/validate_kconfig.py --config .config
# Validate Kconfig structure
python scripts/Kconfig/validate_kconfig.py --Kconfig Kconfig
# Strict validation
python scripts/Kconfig/validate_kconfig.py --config .config --strict
kconfig_migrate.py¶
Located at scripts/Kconfig/migrate_kconfig.py, this script migrates configurations between versions.
Usage:
python scripts/Kconfig/kconfig_migrate.py [options]
Options:
选项 |
描述 |
|---|---|
|
Old configuration file |
|
New configuration file |
|
New Kconfig file |
|
Show help message |
Examples:
# Migrate configuration
python scripts/Kconfig/kconfig_migrate.py --old-config .config.old --new-config .config
Coverage Scripts¶
run_coverage_linux.sh¶
Located at scripts/coverage/run_coverage_linux.sh, this script generates code coverage reports on Linux.
Usage:
bash scripts/coverage/run_coverage_linux.sh
Output:
Coverage data:
coverage.infoHTML report:
coverage_html/index.html
run_coverage_windows.ps1¶
Located at scripts/coverage/run_coverage_windows.ps1, this script generates code coverage reports on Windows.
Usage:
.\scripts\coverage\run_coverage_windows.ps1
Requirements:
OpenCppCoverage or Visual Studio Code Coverage tools
CI Scripts¶
ci_build.py¶
Located at scripts/ci/ci_build.py, this script runs the CI pipeline.
Usage:
python scripts/ci/ci_build.py [options]
Options:
选项 |
描述 |
|---|---|
|
CI stage: build, test, coverage, docs, all (default: all) |
|
Target platform (default: native) |
|
Enable coverage reporting |
|
详细输出 |
|
Show help message |
Examples:
# Run full CI pipeline
python scripts/ci/ci_build.py --stage all
# Run only build stage
python scripts/ci/ci_build.py --stage build
# Run with coverage
python scripts/ci/ci_build.py --stage all --coverage
# CI for STM32F4
python scripts/ci/ci_build.py --platform stm32f4
Setup Scripts¶
setup.py¶
Located at scripts/setup/setup.py, this script sets up the development environment.
Usage:
python scripts/setup/setup.py [options]
Options:
选项 |
描述 |
|---|---|
|
安装 development dependencies |
|
安装 documentation dependencies |
|
安装 testing dependencies |
|
安装 all dependencies |
|
Check environment without installing |
|
Show help message |
Examples:
# Setup development environment
python scripts/setup/setup.py --dev
# Setup for documentation
python scripts/setup/setup.py --docs
# Setup everything
python scripts/setup/setup.py --all
# Check environment
python scripts/setup/setup.py --check
验证 Scripts¶
validate.py¶
Located at scripts/validation/validate.py, this script validates the system configuration and tests.
Usage:
python scripts/validation/validate.py [options]
Options:
选项 |
描述 |
|---|---|
|
Platform to validate (default: all) |
|
Include coverage analysis |
|
Generate validation report |
|
Show help message |
Examples:
# Validate all platforms
python scripts/validation/validate.py
# Validate specific platform
python scripts/validation/validate.py --platform native
# Validate with coverage
python scripts/validation/validate.py --coverage
# Generate report
python scripts/validation/validate.py --report
Common Workflows¶
开发 Workflow¶
# 1. Setup environment
python nexus.py setup --dev
# 2. Build in debug mode
python nexus.py build --type debug
# 3. Run tests
python nexus.py test --verbose
# 4. Format code
python nexus.py format
# 5. Clean artifacts
python nexus.py clean
发布 Workflow¶
# 1. Clean everything
python nexus.py clean --all
# 2. Build release for all platforms
python nexus.py build --type release --platform native
python nexus.py build --type release --platform stm32f4
python nexus.py build --type release --platform stm32h7
# 3. Run tests
python nexus.py test
# 4. Generate documentation
python nexus.py docs --target all
CI/CD Workflow¶
# Run full CI pipeline with coverage
python nexus.py ci --stage all --coverage
故障排除¶
Common Issues¶
Script not found
FileNotFoundError: [Errno 2] No such file or directory: 'scripts/...'
Solution: Ensure you're running scripts from the project root directory.
Python version too old
Python 3.7 or higher is required
Solution: Upgrade Python to version 3.7 or higher.
Missing dependencies
ModuleNotFoundError: No module named 'kconfiglib'
Solution: 安装 dependencies:
pip install -r requirements.txt
Permission denied (Linux/macOS)
Permission denied: './scripts/nexus.sh'
Solution: Make scripts executable:
chmod +x scripts/\*.sh
另请参阅¶
构建系统 - Build system documentation
测试 - Testing guide
贡献指南 - Contribution guidelines
Kconfig Writing Guide - Kconfig configuration guide