基于RTEMS项目学习waf build system

https://waf.io/book
https://blog.csdn.net/u010312436/article/details/81093847

安装

curl -o waf https://waf.io/waf-2.0.27
chmod 755 waf

使用

  • 函数命令
    在 wscript 文件中定义函数命令
def hello(ctx):print('hello world')

通过命令行调用函数

$ waf hello
hello world
'hello' finished successfully (0.001s)

ctx对象允许跨脚本共享数据。

命令函数在调用时会传递一个新的上下文对象;该对象的类是特定于命令的:ConfigureContext 用于配置,BuildContext 用于构建,OptionContext 用于选项,Context 用于任何其他命令。

  • 项目结构
$ tree
|-- src
|   `-- wscript
`-- wscript

顶级wscript中的命令将通过调用名为recurse的上下文方法来调用子项目wscript文件中的相同命令:

def ping(ctx):print('→ ping from ' + ctx.path.abspath())ctx.recurse('src')

这是src/wscript的内容

def ping(ctx):print('→ ping from ' + ctx.path.abspath())
  • 经常使用的函数命令
  1. configure
    配置项目,找到依赖项的位置,收集 和 储存文件夹(项目目录、构建目录、系统文件)信息。
    configure命令用于检查是否满足项目工作的要求并存储信息。然后存储参数以供其他命令(例如构建命令)使用。

  2. options
    用于定义命令行选项

def options(ctx):ctx.add_option('--foo', action='store', default=False, help='Silly test')

访问--prefix命令行选项:

print('→ prefix is ' + ctx.options.prefix)
  1. build
    构建目标
    直接 ./waf 等同于 ./waf build
def options(opt):opt.load('compiler_c')def configure(conf):conf.load('compiler_c')def build(bld):#program: 目标是生成应用程序 appbld.program(source='main.c', target='app', use='myshlib mystlib')#stlib: 目标是生成静态库 mystlib.abld.stlib(source='a.c', target='mystlib', use='myobjects')#shlib: 目标是生成动态库 myshlib.sobld.shlib(source='b.c', target='myshlib')#objects:目标是生成c.obld.objects(source='c.c', target='myobjects')

或者用 features

    bld(features = 'c cprogram',target = 'test.exe',cflags = '-g -O2',# libpath = '/home/yangn0/RTEMS_devel/rtems/6/aarch64-rtems6/raspberrypi4b/lib/',# stlib = ['z'],linkflags = '-lz',source = [# './udp_echo_server/rtems_config.c','./udp_echo_server/udp_echo_server.c'# 'test_uart.c''test_shell.c'# 'test_fdt.c'])

RTEMS WAF

RTEMS Waf 是一个支持 Waf 构建系统和 RTEMS 的模块。该模块集成到项目或库中,提供 Waf 构建支持以创建 RTEMS 库或可执行文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/61513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三极管工作原理,以及小电流,如何驱动大电流

因为研究【自动下载电路实现】,涉及到三极管内容,之前看过,现在回看之前的笔记,一点印象都没了,于是,想了个办法,记住它 个人联想,不喜绕道,只是帮助个人记忆的 标题也是…

干货 | WIFI7和WIFI6区别简单介绍

1、传输标准 WIFI 6使用的是11ax标准WIFI 7使用的是11be标准 2、编码方式及带宽 WIFI6使用了1024-QAM调制方式,将每个数据符号编码为10位。WIFI7使用了更高阶的4096-QAM,将每个符号编码为12位,提高了单位时间内的数据传输量。虽然更高阶的调…

React基础知识一

写的东西太多了,照成csdn文档编辑器都开始卡顿了,所以分篇写。 1.安装React 需要安装下面三个包。 react:react核心包 react-dom:渲染需要用到的核心包 babel:将jsx语法转换成React代码的工具。(没使用jsx可以不装)1.1 在html中…

沥川的算法学习笔记:基础算法(3)----高精度算法

今天学习了acwing算法基础课的高精度算法,记录下算法模版! 高精度算法在输入和输出时需要从后往前进行遍历!!! 1.高精度加法 高精度加法(add): 这个函数接受两个整数向量 A 和 B&am…

对象存储访问管理

一、前言 对象存储是一种以对象为中心的存储方式,将数据存储为对象而不是文件,在对象存储中,每个对象都有唯一的标识符,这个标识符是由系统自动生成的。与传统文件系统不同,对象存储中不需要使用文件夹或路径来查找对…

富格林:总结安全交易出金策略

富格林指出,除了现货黄金之外,现货白银也是一种非常受欢迎的交易产品,但是选择正确的交易策略可以决定交易的成败。在选择交易策略时,需要考虑许多因素,并且要掌握正确的做单技能,安全提高盈利出金。接下来…

【Java】二叉树:数据海洋中灯塔式结构探秘(上)

个人主页 🌹:喜欢做梦 二叉树中有一个树,我们可以猜到他和树有关,那我们先了解一下什么是树,在来了解一下二叉树 一🍝、树型结构 1🍨.什么是树型结构? 树是一种非线性的数据结构&…

Lucene(2):Springboot整合全文检索引擎TermInSetQuery应用实例附源码

前言 本章代码已分享至Gitee: https://gitee.com/lengcz/springbootlucene01 接上文。Lucene(1):Springboot整合全文检索引擎Lucene常规入门附源码 如何在指定范围内查询。从lucene 7 开始,filter 被弃用,导致无法进行调节过滤。 TermInSetQuery 指定…

xiaolin coding 图解网络笔记——HTTP篇

1. HTTP 是什么? HTTP 是超文本传输协议(HyperText Transfer Protocol),一个用在计算机世界里专门在【两点】之间【传输】文字、图片、音频、视频等【超文本】数据的【约定和规范】。 2. HTTP 常见的状态码有哪些? …

AI在虚拟展厅的应用有哪些?有何优势?

AI(人工智能)与虚拟展厅的结合为展览行业带来了革命性的变革。以下是AI在虚拟展厅中的应用及其带来的优势: 一、AI在虚拟展厅中的应用 1、智能导览与讲解 AI技术可以创建虚拟数字人作为导览员,为参观者提供个性化的导览服务。 …

Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作(三)

Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作(三) py2neo 删除 1、连接数据库 from py2neo import Graph graph Graph("bolt://xx.xx.xx.xx:7687", auth(user, pwd), nameneo4j)2、删除节点 # 删除单个节点 node graph.node…

51c深度学习~合集8

我自己的原文哦~ https://blog.51cto.com/whaosoft/12491632 #patchmix 近期中南大学的几位研究者做了一项对比学习方面的工作——「Inter-Instance Similarity Modeling for Contrastive Learning」,主要用于解决现有对比学习方法在训练过程中忽略样本间相似关系…

ara::com 与 AUTOSAR 元模型的关系总结

原文链接:AUTOSAR_EXP_ARAComAPI的7章笔记(6) 整体说明 先是表明此前解释 ara::com API 思想和机制时未涉及具体 AP 元模型清单部分,本章旨在阐明 ara::com 与相关元模型部分的关系,且是较高层次的基本理解性介绍&am…

Android 日常使用整理

Android 日常使用 1.打开APP的权限设置页面2.打开设置页面的所有APP列表3.拨打电话4.本地安装apk5.打开系统照相机的方法5.打开系统相册6.图片一般处理6.view的一般处理7.文件的处理 1.打开APP的权限设置页面 Uri uri Uri.parse("package:" "包名"); In…

openharmony napi调试笔记

一、动态库的编译 第一种openharmony交叉编译链配置方法 使用的编译环境是ubuntu20.04 1、使用vscode配置openharmony sdk交叉编译环境 首先下载openharmony的sdk,如native-linux-x64-4.1.7.5-Release.zip 解压后native目录下就是交叉编译用的sdk 在要编译的源…

分离事务通信

分离事务通信(或称为分离事务总线)在计算机体系结构中,特别是在输入输出(I/O)系统的设计中,是一个重要的概念。以下是对分离事务通信的详细解释: 一、定义 分离事务通信是一种将总线事务分成请…

力扣面试经典 150(下)

文章目录 二叉树的层次遍历82. 二叉树的右视图83. 二叉树的层平均值84. 二叉树的层序遍历85. 二叉树的锯齿形层序遍历 二叉搜索树86. 二叉搜索树的最小绝对差87. 二叉搜索树中第K 小的元素88. 验证二叉搜索树 图89. 岛屿数量90. 被围绕的区域91. 克隆图92. 除法求值93. 课程表9…

Web3的核心技术:区块链如何确保信息安全与共享

在互联网不断迭代的进程中,Web3被视为下一代互联网的核心发展方向,其目标是构建更加开放、安全、去中心化的数字生态。在这一过程中,区块链作为核心技术,为信息安全与共享提供了全新解决方案。本文将深入探讨区块链如何在Web3中实…

Leetcode 生命游戏

以下是上述Java代码的算法思想及其逻辑的中文解释: 算法思想 这段代码实现了LeetCode第289题“生命游戏”的解决方案。核心思想是: 利用原地修改的方式(in-place)存储下一状态的变化: 通过引入额外的状态值&#xff0…

JavaScript 中 arguments、类数组与数组的深入解析

博客主页: [小ᶻZ࿆] 本文专栏: 前端 文章目录 💯前言💯什么是 arguments 对象2.1 arguments 的定义2.2 arguments 的特性2.3 使用场景 💯深入了解 arguments 的结构3.1 arguments 的内部结构arguments 的关键属性 3.2 类数组…