![]() |
CMSIS-Build
Tools, software frameworks, and work flows for productivity with CMSIS based projects
|
cbuild.sh implements the build flow by chaining the utilities cbuildgen and CMake. It replicates the build steps of CMSIS-Pack aware IDEs and also copies configuration files from packs if necessary. The script can be adopted to project specific requirements or replaced by a custom implementation (for example a Python script).
The build flow of the cbuild.sh script is:
packlist to list the URLs of missing software packs.cmake to generate a CMakeLists.txt file (if --cmake is specified).<BuildSystem>.It is called from the Bash command line with the following syntax:
Where:
cbuild.sh is the name of the script.
<ProjectFile> specifies the project file in CMSIS project format.
Operation
| Option | Description |
|---|---|
| --toolchain=<Toolchain> | Specifies the selected toolchain for projects that support multiple compilers. |
| --outdir=<OutDir> | Specifies the output directory (for log files, binaries, and map files). |
| --intdir=<IntDir> | Specifies the directory for intermediate files (such as generated make files, list of missing packs (cpinstall), command files, object files, and dependency files). |
| <CMakeTarget> | Specifies the <target> option for CMake. |
| --quiet | Suppresses output messages except build invocations. |
| --clean | Removes intermediate and output directories. |
| --update=<CprjFile> | Generates <CprjFile> with fixed versions for reproducing the current build. |
| --help | Prints the usage. |
| --log=<LogFile> | Saves output messages in a log file. |
| --jobs=<N> | Specifies the number of job slots for the underlying build system parallel execution. Minimum 1. |
| [–cmake=<BuildSystem>] | Selects the build system, default Ninja. |
CMake based build
$ cbuild.sh Blinky.B-L475E-IOT01A.cprj --cmake (cbuild.sh): Build Invocation 0.10.0 (C) 2020 ARM Blinky.B-L475E-IOT01A.cprj validates (cbuildgen): Build Process Manager 0.10.1-nightly+343 (C) 2020 ARM M650: Command completed successfully. (cbuildgen): Build Process Manager 0.10.1-nightly+343 (C) 2020 ARM M652: Generated makefile for project build: 'C:/Blinky/B-L475E-IOT01A/Objects/CMakeLists.txt' -- The C compiler identification is ARMClang 6.15.2 -- Configuring done -- Generating done -- Build files have been written to: C:/Blinky/B-L475E-IOT01A/Objects [1/49] Building C object CMakeFiles\image.dir\C_\Users\user\AppData\Local\Arm\Packs\Keil\B-L475E-IOT01A_BSP\1.0.0\Drivers\B-L475E-IOT01\stm32l475e_iot01.o [2/49] Building C object CMakeFiles\image.dir\C_\Users\user\AppData\Local\Arm\Packs\Keil\B-L475E-IOT01A_BSP\1.0.0\Drivers\Components\lsm6dsl\lsm6dsl.o [3/49] Building C object CMakeFiles\image.dir\C_\Users\user\AppData\Local\Arm\Packs\Keil\B-L475E-IOT01A_BSP\1.0.0\Drivers\B-L475E-IOT01\stm32l475e_iot01_gyro.o ... [47/49] Building C object CMakeFiles\image.dir\C_\Blinky\B-L475E-IOT01A\RTE\Device\STM32L475VGTx\system_stm32l4xx.o [48/49] Building C object CMakeFiles\image.dir\C_\Blinky\B-L475E-IOT01A\RTE\Device\STM32L475VGTx\STCubeGenerated\Src\stm32l4xx_it.o [49/49] Linking C executable image.axf Program Size: Code=20968 RO-data=784 RW-data=328 ZI-data=37412 cbuild.sh finished successfully!
| Type | Message | Action |
|---|---|---|
| ERROR | error: missing required argument <project>.cprj | See usage and correct the argument. |
| ERROR | error: project file <project>.cprj does not exist | Check project file. |
| ERROR | cmake ${output}${project}.cprj failed! | Check CMake error messages. |
| INFO | cbuild.sh finished successfully! | For information only. |