使用 Cygwin 在 Windows 上设置 waf 编译环境

这些设置说明介绍了如何设置 Cygwin 开启,这样 waf(构建系统)就能在 windows 上本地运行,并为所有支持的板卡构建。

备注

/ardupilot/Tools/environment_install/install-prereqs-windows.ps1 将自动执行以下所有步骤。

安装 Cygwin

  1. 打开网络浏览器 www.cygwin.com/install.html 并下载 "setup-x86_64.exe"。

  2. 在下载 "运行 setup-x86_64.exe "的目录下的 DOS 提示符下(按 window 和 R 键,然后输入 cmd)粘贴以下命令

设置-x86_64.exe -P autoconf,自动生成,缓存,cygwin32-gcc-g++,gcc-g++,git,libtool,生产,瞠目结舌,libexpat-发展,libxml2-发展,蟒蛇 37,蟒蛇 37-未来,蟒蛇 37-lxml,蟒蛇 37-核心,libxslt-发展,蟒蛇 37-发展,procps-ng,压缩,gdb,ddd

或者,进行阶梯式安装:

  1. 打开网络浏览器 www.cygwin.com/install.html 并运行 setup-x86_64.exe"

  2. 接受提示(包括默认文件位置),直到到达 选择套餐 对话框。

  3. 从数以千计的可用软件包中选择所需的软件包。请参考下面的列表,在搜索栏中输入每个软件包的 "名称",如下图所示。找到软件包后,点击 跳过 按钮将其更改为版本号,然后进入下一个软件包:

    ../_images/Cygwin-select-install-gpp.png

    Cygwin 安装程序:选择软件包对话框

    软件包名称

    类别/名称/说明

    autoconf

    开发 | autoconf:autoconf 命令的封装脚本

    自动生成

    Devel | automake:automake 和 aclocal 的封装脚本

    缓存

    Devel | ccache:用于改进重新编译的 C 编译器缓存

    cygwin32-gcc-g++

    Devel | GCC for Cygwin 32 位工具链 (C++)

    gcc-g++

    开发 | gcc-g++ GNU 编译器集(C++)

    git

    Devel | git:分布式版本控制系统

    libtool

    Devel | libtool:通用库支持脚本

    生产

    Devel | make:GNU 版本的 "make "工具

    瞠目结舌

    解释器 | gawk:GNU awk,一种模式扫描和处理语言

    libexpat-devel

    Libs | libexpat-devel:Expat XML 解析器库(开发文件)

    libxml2-devel

    Libs | libxml2-devel:Gnome XML 库(开发中)

    libxslt-devel

    Libs | libxslt-devel:XML 模板库(开发文件)

    蟒蛇 37

    Python | python37:Python3 语言解释器

    python37-devel

    Python | python37-devel:Python3 语言解释器

    python37-future

    Python | python37-future:为 Python 3 和 Python 2 提供简洁的单一源代码支持

    python37-lxml

    Python | python37-lxml:Gnome XML 库(Python 绑定)

    python37-pip

    Python | python37-pip:Python 软件包安装工具

    procps-ng

    system | procps-ng:系统和进程监控实用程序(pkill 需要)

    gdb

    Devel | gdb:GNU 调试器

    ddd

    Devel | ddd:DDD:数据显示调试器

    压缩

    存档 | 压缩:Info-ZIP 压缩工具

  4. 选择所有软件包后,点击其余提示并接受所有其他默认选项(包括附加依赖项)。

  5. 选择 完成 开始下载和安装软件包。

    警告

    有时,安装可能会因为防病毒软件正在运行而停止。如果出现这种情况,请关闭电脑上的所有其他程序,包括防病毒软件,然后再试一次。

安装 GCC 编译器

备注

只有打算为基于 ARM 的电路板编译时才需要此步骤。

  1. 从以下网址下载并安装最新的 gcc-arm-non-eabi 编译器 firmware.ardupilot.org/Tools/STM32-tools (快速链接在此)

  2. 接受许可证

  3. 安装到默认位置

  4. 接受 SSL 证书

  5. 选中 "将路径添加到环境变量 "选项

../_images/building-setup-windows-cygwin-gcc.png

安装 MAVProxy

运行 SITL 时需要使用 MAVProxy GCS。如果不打算运行 SITL,可以跳过这一步。

  1. 要在 Windows 上安装 MAVProxy,请遵循 MAVProxy 文档.

在 Cygwin 中设置目录/路径和额外软件包

  1. 从桌面或开始菜单图标打开并关闭 "Cygwin 终端 "应用程序。这会在 Cygwin 主目录下为用户创建初始化文件。

  2. 从桌面或开始菜单图标打开 "Cygwin 终端 "应用程序。输入以下命令,将 Python 3.7 设置为默认 Python,然后安装其他 Python 软件包:

ln -s /我们/箱柜/python3.7 /我们/箱柜/蟒蛇
ln -s /我们/箱柜/管道3.7 /我们/箱柜/核心
核心 安装 空虚 串行 pymavlink

下载 ArduPilot 源代码

"克隆 "是 git 的术语,指为远程仓库(即 GitHub 服务器上的仓库)制作本地副本。

开发人员应克隆主 ArduPilot 存储库 (如果他们只是想下载和编译最新代码)或他们自己的 分叉 (如果他们想修改源代码,并可能将修改提交回来)。

常用工具的说明如下,但无论使用哪种工具,都需要提供源代码库的 URL。这可以在每个 Github 仓库主页的屏幕右侧找到,但一般来说,URL 是:

  • https://github.com/ArduPilot/ardupilot.git 主 ardupilot 软件仓库

  • https://github.com/your-github-account/ardupilot 为您的 分叉 的软件包

../_images/APM-Git-Github-Clone.jpg

使用命令行克隆

  • 打开终端,导航到您希望保存克隆的目录

  • 克隆你的叉子

    git 复制 --递归-子模块 https://github./您的-github-用户名/ardupilot
    CD ardupilot
    

备注

如果某些防火墙不允许 ssh 访问,从而导致上述子模块更新失败,在这种情况下,你可以通过以下命令告诉 git 单方面使用 https:

git 配置 --全球 网址."https://";

使用 https 协议,而不是默认的 git:// 前缀。

使用 Waf 构建

现在,您应该可以从 Windows 开始菜单启动 "Cygwin 终端 "应用程序,并按照以下说明使用 waf 进行构建。 BUILD.md.

警告

如果某些文件的文件路径过长,编译可能会失败。如果编译失败,请尝试 克隆 ArduPilot 到目录结构中很高的目录(即 ~/ardupilot)。

如果在构建过程中出现缺少数据包 xyz 的错误,请重新检查是否已安装上述所有 Cygwin 软件包

运行 SITL

您可以像在其他构建环境中一样运行 SITL。要看到终端,你应该安装 VcXsrv 或其他 Windows X 服务器应用程序。然后,你必须通过设置 DISPLAY 变量来告诉 Cygwin 在哪里寻找显示屏。

出口 显示屏=:0.0

为 Windows 构建 SITL 二进制文件

您可以构建 32 位二进制文件,以便在 Cygwin 之外运行,只需少量配套文件即可。当与 Mission Planner 结合使用时,这将非常有用,可以使用稳定的发布版本而不是 ArduPilot 开发分支的版本来运行 SITL。方法是在 Cygwin 中使用下面的命令编译,然后将二进制文件复制到 "sitl "文件夹,该文件夹通常位于 C:\Users\user\Documents\Mission Planner\sitl。Mission Planner地面站将在首次运行 SITL 时下载所需文件。首次运行后,可以用您构建的文件替换载具特定的二进制文件。自定义 SITL 二进制文件应位于 /ardupilot/build/sitl。

./waf 配置 --官方=坐标 --工具链 x86_64-pc-cygwin