首页
学习
活动
专区
圈层
工具
发布

SCons - 简单而强大的项目编译脚本

N年前学的makefile,当时还勉强能写一些简单的工程编译,现在已经基本忘了。makefile确实编写复杂,而且平时也不是经常使用,容易忘记。偶识了scons,一切都变的简单了。...最近研究了下scons,原来需要上百行的makefile编译过程,现在只需要十行不到,而且没有makefile那些繁杂的结构语法,完全使用python语言就可以进行编译脚本编写,非常好记忆和编译一些大的工程...直接使用apt-get install scons命令就可以完成安装,需要python环境。...编译脚本 Scons对应的编译脚本名称为SConstruct,就如同make对应的编译脚本为makefile SConstruct脚本编写 编译函数 Program():执行编译操作,生成可执行文件...编译参数 target,生成的执行文件名字 source,编译文件 LIBS,依赖库 LIBPATH,依赖库路径,有环境变量的可不添加,针对用户库或第三方库 CPPPATH,头文件路径

3K100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    RTT 是如何管理和构建工程的?

    scons 引用 rtt 文档中心的一句话来介绍 scons: scons 是一套由 Python 语言编写的开源构建系统,类似于 GNU Make,它采用不同于通常 Makefile 文件的方式,而是使用...这些文件也是 Python 脚本,能够使用标准的 Python 语法来编写。...使用 makefile 时,我们可以通过命令行输入 make 来编译工程,在使用 scons 时,同样的道理,我们也可以使用 scons 来编译工程,如图所示: ?...src 可以看到这里的 src 所代表的意思就是将当前文件夹下的所有 .c 文件加入到 Application 中,这里也可以控制指定的文件加入到对应的 group 中。...同时,RTT 采用 scons 来进行构建工程,通过 SConscript 控制文件和 group 加入到工程中进行编译。

    1.9K10

    【完整版】使用 Rust 进行嵌入式开发

    Rust 的设计理念完全是嵌入式开发所需要的。 嵌入式软件在运行过程中出现问题,大部分是由于内存引起的。Rust 语言可以说是一门面向编译器的语言。在编译期间,就能够确保你安全地使用内存。...目前,嵌入式的主流开发语言还是 C 语言,不能上来就把底层的逻辑用 Rust 重新实现一遍。但是可以在 C 代码中嵌入 Rust 语言。...创建 lib 库 1、在 Clion 中使用 cargo init --lib rust_to_c 建立 lib 库。添加以下代码到 lib.rs 中,使用 Rust 语言计算两个整数的和: #!...{ loop{} } 2、生成库文件和头文件并放在 application 目录下 3、使用 scons 编译,链接时报错,在 rust github 仓库的 issues 中找到了...在 C 代码中调用 Rust,那么在 Rust 中也可以调用 C 代码。

    3.2K10

    riscv32 qemu rt-thread的最小移植实现(1)

    对于第一阶段的任务划分,规划如下: 1.riscv32工程模板的构建 输出目标:工程编译正常 该工作主要适配scons工程、目录结构、编译脚本,链接脚本、文件组织。...4.riscv32工程模板的构建 rt-thread是以scons脚本进行编译和链接的,所以在制作bsp时需要依据scons的构建规则进行统筹规划。...最简单的工程只需要包括 1.scons构建的必须文件 Sconscript、SConstruct 2.menuconfig配置文件 Kconfig 3.链接脚本文件 link.lds 4.rtt配置文件...接着就需要进行设计将代码能够正常的编译通过。 不改变其他工程代码,经过一些列的调整,将代码能够通过scons编译即可。...也会在近期选择riscv32的硬件平台进行选型以及移植测试。

    2.1K30

    如何向RT-Thread提交一个BSP?

    二、RT-Thread遵循的许可协议 RT-Thread的开源协议是进行过调整的,在2018年RT-Thread官方公众号发布的一篇文章[1]中,我们可以知道当时是使用的GPLv2协议, ?...支持GPIO和UART外设,支持SCons构建系统,可以输入scons调用env工具中包含的arm-gcc编译器构建工程,支持以下scons命令: scons:使用arm-gcc编译BSP scons...,至少应该包括以下部分: 内核移植,支持线程调度、线程间同步和通信 支持GPIO/UART外设,PIN/Serial设备驱动 支持SCons构建系统,可以使用arm-gcc进行编译,支持生成MDK工程,...BSP包,可以参考其他BSP文件夹下的README文件 提交关于BSP的代码,尽量确保代码改动仅限制于BSP中,而不影响到其他代码,否则可能会被拒绝[3]。...6.添加到CI自动化编译 如果是提交的完整BSP,可以将BSP添加到CI编译脚本,使用远程主机对BSP进行编译,和本地使用arm-gcc scons编译是一样的,如果本地编译正常,这一步基本也会通过。

    1.5K20

    基于 Hi3861 平台的 HarmonyOS Device 开发体验

    SSH 密钥配置的时候,我们可以在远程主机上生成密钥,也可以在本机生成密钥,最终将配置关联就可以。....zip解压有惊喜哦 -- 在DevEcoDeviceTool\extension\deveco\tool您能得到HiBurn.exe,这个程序就可以用来烧录(相当于不使用 VSCode 的扩展在程序中配置烧录参数直接烧录...如果您和我一样还想尝试一下在 CentOS 上搭建环境,那就推荐鸿蒙社区的文章--在 CentOS 中安装鸿蒙 LiteOS 编译环境-海思 Hi3861[8],同样的也只取我需要的--我只需要编译部分的环境搭建...HarmonyOS Devic环境搭建-安装Scons 2.3 安装编译工具环境 我们需要用到的编译工具有交叉编译器 gcc_riscv32、 产生 ninja 编译脚本的 gn、执行 ninja...、构建和配置脚本 │ └── lite ├── build.py # 编译脚本文件 ├── device # qemu模拟不同内核运行在不同的单板

    2.9K40

    OpenHarmony轻量系统开发【2】源码下载和开发环境

    Linux环境用于代码下载、编译等。这里推荐大家只使用Linux环境即可,Linux可以使用Ubuntu 20.04版本。...关于Windows环境,大家可装可以不装,编写代码可以使用自己喜欢的IDE、下载的话,不同开发板都会提供不同的下载工具。本文也会列出来,但是后面官方可能会更新,导致本文不一定适用。...(2)具体开发板所需的开发环境:这个跟具体芯片、开发板相关,例如对应的交叉编译器、或者制作文件系统相关的脚本组件等。这些看自己所需的芯片环境是哪些。...sudo dpkg-reconfigure dash(3)使用如下apt-get命令安装编译所需的必要的库和工具sudo apt-get install gccsudo apt-get install...source ~/.bashrcShell命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。

    97210

    使用Cython和Nuitka编译Python脚本

    0x00 前言 在Python中,可以使用py2exe或PyInstaller之类的工具将Python脚本编译成二进制文件,从而提升可移植性,并在一定程度上提升了性能。...为了测试不同编译方式的性能差异,这里统一使用python2.7中提供的test/pystone.py作为执行脚本。由于这个脚本不支持python3,因此做了下python3的适配。...-onefile: 这个参数可以解决--standalone参数会有多个文件的问题,保证最终生成的是一个可执行文件 --nofollow-imports: 不编译import进来的第三方库 --clang...: 强制使用clang作为编译后端 --static-libpython=yes: 静态链接libpython --show-scons: 显示编译C代码过程中的详细日志 通过观察可以发现,nuitka...而Nuitka相比Cython,可以同时编译多个Python脚本,功能上更加强大一些,性能也提升了不少。

    1.7K30

    godot使用简介

    编译 https://gitee.com/mirrors/godot.git python -m pip install scons scons -j6 platform=windows 场景Scene...,AutoLoad选项添加资源窗口中的全局脚本) GDScript 函数:func name(): 分支:if expresion: 循环:for var in varlist: 属性:var setget...object,signal) Node方法:gettree(获取场景树) , getnode(获取节点) Reference:资源文件init_ref、 unreference、 reference(可以查看...help中的api) Signal(Qt信号)、Connect(连接邮槽) Node属性: Process:idle Processing(脚本空闲处理帧数据)、fixed Processing(脚本固定处理帧数据...(“NodePath”)的快捷方式 @“A/B”, NodePath export导出,编译器可编辑 signal自定义信号,编辑器可见的事件信号 get、set属性 supper父类,3.x使用.访问父类

    1.4K40

    让RT-Thread在frdm-k64上跑起来

    这也是我们的机会。RTT使用Scons来构建源码和系统,官网对Scons的介绍 ?...在ENV下如果直接输入Scons命令就会以自带的gcc来编译源码,而也可以指定生成iar/mdk,比较遗憾的是目前最新的版本里面k64的bsp还不适配iar,只支持mdk,而且是mdk4的工程,但我电脑上是...可以打开工程编译下,验证下我们生成的工程是否可以编译通过 ? 可以使用env带的menuconfig来添加不同的组件和软件包,一步步来添加功能。...可以试着添加和移植下我们多次讲的modbus通信和J1939通信,也可以自己动手来移植到iar环境下。...这时候在输入menuconfig命令就可以正常使用menuconfig了 ? 主要使用键盘上的上下左右键,空格,回车,和esc键来操作。

    1.1K20

    RTT 全志D1s RDC2022纪念版开发板开箱使用分享与折腾记录

    芯片框图如下: 原理图解析: RTT D1s RDC2022纪念版开发板使用了核心板+底板的设计方式,一般核心板使用多层板设计,完成最小系统设计后,底板可以使用双面板设计,这样可以节省制作成本,也方便开发板在项目直接购核心板...scons 命令编译 内核 编译完内核之后,会自动执行打包命令 ....lvgl也很方便,而且得益于rt-smart的内核态与用户态分离,我们可以很方便的借(zhao)鉴(chao)大佬们之前的研究成果。...然后我们需要修改scons的编译脚本,这里用任何喜欢的编辑器打开userapps目录下的SConstruct文件,翻到最后,添加一行编译media文件夹: 因为我手上只有一块不支持电容触摸的RGB-LCD...然后依然是使用scons编译用户程序,mksdcard.sh打包镜像,重新下载到贴片TF卡中后,即可运行lvgl程序下面是效果演示: 可以看到效果还是很不错的,480*272分辨率的屏幕能够达到60fps

    1.3K10

    Linux上源码编译MongoDB

    在docs/building.md中是编译所需的依赖。...编译升级gcc 在gcc的官网找到下载页面。使用svn或者通过ftp镜像站下载源码. 我使用了一个ftp镜像站下载的源码压缩包。 然后进行解压和安装依赖。...之后编译 输出: 一般情况下, 就这样gcc就可以编译完成了。...再次上Python 官网 (官网真是个好地方2333)下载Python2.7的源码 编译过很多次了, 就只写主要的东西了 安装scons 在官网上找到源码包直接安装 编译安装MongoDB 最后的安装过程就不是这篇里面的重点了...查了一下,根据这篇只要在构建的时候,加上--disable-warnings-as-errors就可以解决了 本篇的重点是编译的过程,后续MongoDB配置部分抽空再写。 全文完。

    2.2K30

    快来用Makefile管理工程,提高工作效率!

    依赖(Dependencies):这是生成目标所需的文件或目标。 命令(Commands):这些是生成目标时需要执行的命令。 Makefile 使用 GNU make 工具来执行文件中定义的规则。...Makefile 可以配置不同的编译器选项,比如优化级别、处理器特定的指令集,以提升执行效率和响应速度。 自动化构建过程:在嵌入式开发中,软件可能需要频繁地进行小范围的修改和测试。...Makefile 可以用来自动化固件的构建过程,包括编译、链接以及生成可直接烧录到硬件的二进制文件。 模块化构建:在复杂的嵌入式项目中,软件通常被分解成多个模块或库。...SCons: 用途:一个使用 Python 脚本代替传统 Makefile 的构建工具。 特点:SCons 能自动处理依赖关系,提供更精确的构建过程控制。它支持跨平台构建,非常适合复杂的嵌入式项目。...Bazel: 用途:虽然是通用的构建工具,但在需要处理大型源代码库的嵌入式项目中表现优异。

    91910

    物联网实践 | Huawei LiteOS开发环境搭建及Demo程序在Hi3861上编译烧录运行

    简介 本次实践是为尝试在嵌有华为海思芯片的Hi3861WIFI物联网开发板上配置开发环境并使用配套开发工具(HUAWEI DevEco Device Tool或HUAWEI LiteOS Studio)...将Demo工程编译烧录和运行。...info:HiSpark_Pegasus_Setup_Package文件夹内的SetupInstall.bat运行时可能出现“scons不是内部或外部命令...”的提示,此时请手动安装Scons并重新启动...4.编译器配置中:SConstruct脚本,点击文件夹右侧的放大镜自动搜索SConstruct脚本位置,正常搜索完点确认。 5.烧录器配置中:烧录方式选择HiBurner,确认。...完成安装后的板子,红框跳线需装上 7.F7编译,成功时终端输出紫色BUILD SUCCESS字样。 8.F8烧录,出现HiBurn程序窗口时,按一次Hi3861板上的Ret按键,烧录开始。

    1.3K30
    领券