重庆网站建设齐重庆零臻科技,铜川市建设集团网站,小说网站排行榜前十名,wui网站建设什么是构建工具#xff08;系统#xff09;
构建工具#xff08;software construction tool#xff09;是一种软件#xff0c;它可以**根据一定的规则或指令#xff0c;将源代码编译成可执行的二进制程序。**这是构建工具最基本也最重要的功能。
实际上构建工具的功能…什么是构建工具系统
构建工具software construction tool是一种软件它可以**根据一定的规则或指令将源代码编译成可执行的二进制程序。**这是构建工具最基本也最重要的功能。
实际上构建工具的功能不止于此通过这些规则有一定的语法并组织成文件。这些文件用来控制构建工具的行为在完成软件构建之外也可以做其它事情。
目前最流行的构建工具是GNU Make。很多知名开源软件如Linux内核就采用Make构建。 Make通过读取Makefile文件来检测文件的组织结构和依赖关系并完成Makefile中所指定的命令。
由于历史原因Makefile的语法比较混乱不利于初学者学习。此外在Windows平台上使用Make也不方便需要安装Cygwin环境。为了克服Make的种种缺点人们开发了其它构建工具如CMake和SCons等。
RT-Thread构建工具
RT-Thread早期使用Make/Makefile构建。从RT-Thread0.3.0开始RT-Thread开发团队逐渐引入了SCons构建系统引入SCons唯一的目的是使大家从复杂的Makefile配置、IDE配置中脱离出来把精力集中在RT-Thread功能开发上。
有些读者可能会有些疑惑这里介绍的构建工具与IDE有什么不同呢 IDE通过图形化界面的操作来完成构建。大部分IDE会根据用户所添加的源码生成类似Makefile或Sconscript的脚本文件在底层调用类似Make或SCons的工具来构建源码。
SCons简介
SCons是一套由Python语言编写的开源构建系统类似于GNU Make。 它采用不同于通常Makefile文件的形式而是使用SConstruct和SConscript。 这些文件也是Python脚本能够使用标准的Python语法来编写。所以在Sconstruct和SConscript文件中可以调用Python标准库进行各类复杂的处理而不局限于Makefile设定的规则。
RT-Thread中Scons的脚本构建
SCons使用SConscript和SConstruct文件来组织源码结构并进行构建 SConstruct是scons构建的主脚本SConScript存放在源代码的子目录下通常放在项目的子目录以达到分层构建的目的。
一个项目BSP只有一个SConstruct但是会有多个SConscript。 一般情况下每个存放有源代码的子目录下都会放置一个SConscript。
/-- rtconfig.py ---- 控制SCons构建的配置文件存放了如工具链构建参数等配置。-- SConscript-- SConstruct ---- SCons的入口脚本初始化了SCons构建rt-thread所需的必要环境-- Kconfig ---- 顶层Kconfig文件menuconfig的入口Kconfig文件-- rt-thread/--- src/---- SConscript ---- 各级源码的scons子脚本控制当前级别下的源码构建行为---- Kconfig ---- 各级源码的Kconfig子脚本存放当前级别下的配置项---- **.c为了方便开发者使用SConsRT-Thread搭建了如上所示的构建框架 其中包括了一份SCons的入口脚本SConstruct以及分散在各级源码的SCons子脚本Sconscript还有一份便于配置构建行为的配置脚本rtconfig.py。 同时RT-Thread也在SCons标准接口的基础上提供了一组用于组织源码工程的扩展接口。开发者在使用时可以借助RT-Thread提供的扩展接口更方便的完成源码的组织与配置。 为了使RT-Thread更好的支持多种编译器以及方便的调整构建参数为每个BSP单独创建了一个名为rtconfig.py的配置文件。
因此每一个 RT-Thread BSP 目录下都会存在下面三个文件rtconfig.py、SConstruct 和 SConscript它们控制 BSP 的构建。一个 BSP 中只有一个 SConstruct 文件但是却会有多个 SConscript 文件可以说 SConscript 文件是组织源码的主力军。
SCons基本命令
RT-Thread构建系统支持多种编译器。 目前支持的编译器包括ARM GCC、MDK、IQR、VisualStudio、Visual DSP。主流的 ARM Cortex M0、M3、M4 平台基本上 ARM GCC、MDK、IAR 都是支持的。有一些 BSP 可能仅支持一种读者可以阅读该 BSP 目录下的 rtconfig.py 里的 CROSS_TOOL 选项查看当前支持的编译器。
打开Env工具如果是ARM平台的芯片输入scons命令直接编译BSP这时候默认使用的是ARM GCC编译器。
如果用户要使用其它的BSP已经支持的编译器编译工程或者BSP为非ARM平台的芯片那么不能直接使用scons命令编译工程需要自己安装对应的编译器并且指定使用的编译器路径。
在编译工程前可以在Env命令行界面使用下面的2个命令指定编译器为MDK和编译器路径为MDK的安装路径
set RTT_CCkeil
set RTT_EXEC_PATHC:/Keilv5再例如
set RTT_CCgcc
set RTT_EXEC_PATHD:\software\RaspberryPi-Pico\gcc\2020-q4-major\binscons
在Env命令行窗口进入要编译的BSP工程目录然后使用此命令可以直接编译工程。 如果执行过 scons 命令后修改了一些源文件再次执行 scons 命令时则 SCons 会进行增量编译仅编译修改过的源文件并链接。
scons --targetXXX
如果使用MDK/IAR来进行项目开发在生成MDK或者IAR工程前需要检查rtconfig.py文件中EXEC_PATH变量所保存的对应IDE的安装路径是否正确 当修改rtconfig.h打开或者关闭某些组件时需要使用以下命令中的其中一种重新生成对应的定制化的工程然后在 MDK/IAR 进行编译下载:
scons --targetiar
scons --targetmdk4
scons --targetmdk5scons --dist
搭建项目框架使用此命令会在BSP目录下生成dist目录这便是开发项目的目录结构包含了RTT源码以及BSP相关工程不相关的BSP文件夹及libcpu都会被移除并且可以随意拷贝此工程到任何目录下使用。