关于apm使用./waf编译的笔记

本文介绍了在Ubuntu 16.10系统中,针对ardupilot项目如何使用./waf进行编译。文章指出./waf类似于make,首次使用需要配置编译设置,特别是要更改默认的--board选项。此外,提到了./waf的高级用法,如使用-j参数提高编译效率,并强调了所有操作应在项目根目录下进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统:
      ubuntu 16.10
目标工程:
      ardupilot(以本篇博客发布时间为准刚刚拉下来了一个master)
PC配置:
      dell precision 5520,i7 7820,东芝ssd,ddr4
      

不得不说apm项目组真的非常敬业,首先向他们的开源事业致敬.

不管怎么说先上链接,从这里可以进入apm官方对使用./waf的介绍,虽然官网没说为啥迁移到./waf,我估计是想和px4项目显得有些不一样吧,不过这种越描越黑的即视感,额.

./waf和对使用make作为编译依赖描述的情况差不多(官方是这么说的),鉴于锤子刚刚发了新手机,我也跟风来一句:到底是不是如官方所说,那,就不得而知了,嘿嘿.


就我个人理解上也觉得把./waf当作make用确实也差不多,也不太麻烦.

这里插一句题外话,在linux里善用help其实可以显著改善学习效率,比如我现在经常习惯性的敲个help,感觉自学一下也很简单.

./waf在使用的时候需要对编译配置一下编译的设置,比如必要编译的程序准备往哪个板子下,那你就需要配置哪个板子,首先进入ardupilot根目录,这里以px4-v2的板子为例

./waf configure --boar
### WAF 编译命令列表及配置说明 #### 基础概念 WAF 是一种用于构建和编译系统的工具,能够简化复杂项目的编译流程[^1]。 #### 目录结构概述 对于典型的 WAF 项目而言,其基本目录结构通常包括源码文件夹 `src` 和根级别的 `wscript` 文件。其中 `wscript` 负责定义整个工程的构建逻辑以及如何处理各个子模块。 #### 配置与编译过程 针对特定硬件平台(如 ESP32 或 ChibiOS),可以通过修改配置来适应不同需求。这涉及到目标设备的选择及其配套组件的支持情况。具体来说,在 ArduPilot 这样的开源飞行控制系统中,通过调整 `Tools/ardupilotwaf/boards.py` 文件内的设置项可以实现这一点[^2]。 #### 条件编译控制 为了启用某些特性(例如实时钟支持),可以在上述提到的 Python 脚本里寻找相应的宏定义并将其设为真值状态。“AP_RTC_ENABLED” 就是用来开启这一功能的关键字之一[^3]。 #### 自定义打包名称 当希望改变最终生成档案的名字时,可在主 `wscript` 文件顶部声明两个变量:一个是应用程序名 (`APPNAME`);另一个则是版本号(`VERSION`)。这样做之后,默认创建出来的 tarball 将会依据这两个参数来进行命名而不是采用预设的形式[^4]。 ```python #! /usr/bin/env python # encoding: utf-8 APPNAME = 'custom_name' VERSION = '2.0.0' top = '.' out = 'build' def configure(ctx): print(' -> configuring the project in ' + ctx.path.abspath()) def build(ctx): pass ``` #### 主要编译指令汇总 以下是几个常用的 WAF 操作: - **初始化环境** 使用 `./waf distclean` 清除所有之前产生的中间产物以便重新开始。 - **配置项目** 执行 `./waf configure` 对当前工作区进行必要的准备工作,比如检测依赖库是否存在等。 - **实际编译** 输入 `./waf` 即可启动完整的编译链路直至产出二进制成果物。 - **清理临时数据** 若想移除由上一轮操作遗留下来的缓存资料,则应运行 `./waf clean`。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值