Edit online

scons 命令参考指南

24 Dec 2024
Read time: 3 minute(s)

SCons 是一个跨平台的构建系统,被广泛应用于软件开发项目中,支持在 Windows 和 Linux 上使用,且用法相同。本节列示了常用的 SCons 命令和功能。

scons --list-def

解压缩 SDK 后,使用 scons --list-def 命令可以罗列 SDK 中发布的所有项目名称,方便用户查看和管理可用的项目资源。示例如下:

scons --list-def
输出示例结果如下:
scons: Reading SConscript files ...
Built-in configs:
  0. d12x_demo68-nand_baremetal_bootloader
  1. d12x_demo68-nand_rt-thread_helloworld
  2. d12x_demo68-nor_baremetal_bootloader
  3. d12x_demo68-nor_rt-thread_helloworld
  4. d12x_hmi-nor_baremetal_bootloader
  5. d12x_hmi-nor_rt-thread_helloworld
  6. d13x_demo88-nand_baremetal_bootloader
  7. d13x_demo88-nand_rt-thread_helloworld
  8. d13x_demo88-nor_baremetal_bootloader
  9. d13x_demo88-nor_rt-thread_helloworld
  10. d13x_kunlunpi88-nor_baremetal_bootloader
  11. d13x_kunlunpi88-nor_rt-thread_helloworld
  12. d21x_demo128-nand_baremetal_bootloader
  13. d21x_demo128-nand_rt-thread_helloworld
  14. g73x_demo100-nor_baremetal_bootloader
  15. g73x_demo100-nor_rt-thread_helloworld

scons --apply-def=项目索引或名称

使用命令 scons --apply-def=[项目索引或名称] 可以选择特定的项目配置进行构建,命令中可以使用项目名称或项目索引完成构建:
  • 使用数字索引,例如 --apply-def=3,即应用列表中的第三个配置(从 0 开始计数)。以下示例表示应用名为 d12x_demo68-nor_rt-thread_helloworld_defconfig 的配置。
    scons --apply-def=3
    scons: Reading SConscript files ...
    Load config from target\configs\d12x_demo68-nor_rt-thread_helloworld_defconfig
    
    scons --apply-def=d12x_demo68-nor_rt-thread_helloworld_defconfig
    scons: Reading SConscript files ...
    Load config from target\configs\d12x_demo68-nor_rt-thread_helloworld_defconfig
  • 直接使用配置名称,例如 --apply-def=d12x_demo68-nor_rt-thread_helloworld_defconfig
    scons --apply-def=d12x_demo68-nor_rt-thread_helloworld_defconfig
    scons: Reading SConscript files ...
    Load config from target\configs\d12x_demo68-nor_rt-thread_helloworld_defconfig

scons --menuconfig

使用命令 scons --menuconfig 可以调出 menuconfig 图形界面,以便根据需要调整项目设置。

scons --menuconfig
menuconfig GUI 界面示例如下:

lbl-menuconfig

完成配置后,保存并退出配置界面,SCons 会根据所做的更改重新编译项目。

注:
关于 menuconfig 的更多信息,可查看

scons

使用命令 scons 开始构建过程,编译成功后生成镜像文件。默认在简洁模式下进行构建,不会输出编译选项等信息。

scons
根据下列打印信息示例,编译成功后生成的文件路径为 e:\luban-lite\output\d12x_demo68-nor_rt-thread_helloworld\images\d12x_demo68-nor_v1.0.0.img
Creating e:\luban-lite\output/d12x_demo68-nor_rt-thread_helloworld/images/usbupg-ddr-init.aic ...
Creating e:\luban-lite\output/d12x_demo68-nor_rt-thread_helloworld/images/bootloader.aic ...
Creating e:\luban-lite\output/d12x_demo68-nor_rt-thread_helloworld/images/os.aic ...
Image header is generated.
Meta data for image components:
            Meta for image.updater.psram       offset 0x1600     size 0x6010 (24592)
            Meta for image.updater.spl         offset 0x7e00     size 0x2d310 (185104)
            Meta for image.info                offset 0x0        size 0x800 (2048)
            Meta for image.target.spl          offset 0x35600    size 0x2d310 (185104)
            Meta for image.target.os           offset 0x62e00    size 0xd8800 (886784)
            Meta for image.target.rodata       offset 0x13b600   size 0x2b000 (176128)
            Meta for image.target.data         offset 0x166600   size 0x700000 (7340032)
    Packing file data:
            uartupg-psram-init.aic
            bootloader.aic
            bootloader.aic
            d12x_os.itb
            rodata.fatfs
            data.lfs
    Image file is generated: e:/luban-lite/output/d12x_demo68-nor_rt-thread_helloworld/images/d12x_demo68-nor_v1.0.0.img

Luban-Lite is built successfully

scons: done building targets.

scons --verbose

使用 scons --verbose 可以显示更详细的编译信息,包括编译器选项等,便于调试。

scons --clean

运行命令 scons --clean 清除上一次编译构建过程中生成的所有临时文件,确保在下一次编译构建时,所有源文件都会被重新编译。

scons --clean

或者使用缩写命令:

scons -c

scons --save-def

保存当前板卡默认配置。

scons --info

显示当前工程信息,可使用简洁命令 scons i

scons distclean

清除工具链和输出目录。

scons target=TARGET

生成目标工程,例如 eclipse/eclipse_sdk,其中 TARGET 是需要生成的目标工程名称。

scons genconfig

通过 rtconfig.h 生成 .config 文件。

scons useconfig=USECONFIG

通过配置文件生成 rtconfig.h,其中 USECONFIG 是需要使用的配置文件路径。

scons --run-qemu

运行当前编译出来的 qemu 目标文件。

scons --list-size

size 命令列出所有 .o 文件下 text/data/bss 中各个 section 的大小。

scons --pkgs-update

下载选择的在线 packages。