跳至内容

Windows 开发环境(基于 Cygwin)

警告

这种开发环境是 社区支持和维护.它可能与当前版本的 PX4 兼容,也可能不兼容。

之前曾推荐过该工具链,但由于包装问题,无法与 PX4 v1.12 及更高版本一起使用。工具链 基于 Windows WSL2 的开发环境 应优先使用

参见 工具链安装 了解核心开发团队支持的环境和工具。

以下说明介绍了如何在 Windows 10 上设置(基于 Cygwin 的)PX4 开发环境。该环境可用于为以下设备构建 PX4:

安装说明

  1. 从以下网址下载最新版本的即用型 MSI 安装程序: Github 发布亚马逊 S3 (快速下载)。

  2. 运行它,选择所需的安装位置,等待安装:

    jMAVSimOnWindows

  3. 在安装结束时勾选复选框,以便 克隆 PX4 资源库,使用 jMAVSim 构建并运行仿真 (这样可以简化流程,让您轻松上手)。

    信息

    如果您错过了这一步,您需要 手动克隆 PX4-Autopilot 软件仓库.

警告

在撰写本文时,安装程序缺少一些依赖项(目前还无法重建以添加这些依赖项,请参阅 PX4-windows-toolchain#31).

自己添加这些内容:

  1. 浏览到工具链安装目录(默认为 C:\PX4\)

  2. 运行 run-console.bat (双击)启动类似 linux 的 Cygwin bash 控制台

  3. 在控制台中输入以下命令

    管道3 安装 --用户 kconfiglib jsonschema 未来

入门

工具链使用专门配置的控制台窗口(通过运行 run-console.bat 脚本),从中可以调用正常的 PX4 构建命令:

  1. 浏览到工具链安装目录(默认为 C:\PX4\)

  2. 运行 run-console.bat (双击)启动类似 linux 的 Cygwin bash 控制台(必须使用该控制台才能构建 PX4)。

  3. 在控制台内克隆 PX4 PX4-Autopilot 资源库:

    信息

    如果您勾选了安装程序选项以 克隆 PX4 资源库,使用 jMAVSim 构建并运行仿真.克隆只需进行一次!

    # 克隆 PX4-Autopilot 资源库到主文件夹 & 并行加载子模块
    Git 复制 --递归 -j8 https://github.com/PX4/PX4-Autopilot.git

    现在您可以使用控制台/PX4-Autopilot 资源库来构建 PX4。

  4. 例如,运行 JMAVSim:

    # 导航至 PX4-Autopilot 软件仓库
    CD 固件
    # 使用 jMAVSim 建立并运行 SITL 仿真,以测试设置
    生产 px4_sitl jmavsim

    控制台随后将显示

    jMAVSimOnWindows

下一步工作

完成命令行工具链的设置后:

故障排除

文件监控工具与工具链速度

杀毒软件和其他后台文件监控工具会大大降低工具链的安装和 PX4 的构建速度。

您可能希望在构建过程中暂时停止它们(风险自担)。

Windows & Git 特殊案例

Windows CR+LF 与 Unix LF 行结束符对比

我们建议您在使用该工具链处理每个版本库时,强制使用 Unix 风格的 LF 结尾(并使用在保存更改时保留这些结尾的编辑器,如 Eclipse 或 VS Code)。编译源文件时也可以使用本地检查出的 CR+LF 结尾,但在 Cygwin 中有些情况(如执行 shell 脚本)需要使用 Unix 行结束符(否则会出现以下错误 $'\r':未找到命令。).幸运的是,只要在软件源的根目录下执行这两条命令,git 就能帮你做到这一点:

Git 配置 core.autocrlf 错误
Git 配置 core.eol lf

如果您在多个软件源上使用该工具链,也可以为您的机器全局设置这两项配置:

Git 配置 --全球 ...

不建议这样做,因为这可能会影响 Windows 机器上其他(不相关的)git 的使用。

Unix 权限执行位

在 Unix 下,每个文件的权限中都有一个标志,告诉操作系统是否允许执行该文件。 Git 尽管 Windows NTFS 文件系统不使用该位)。这通常会导致 Git 发现权限中的"假阳性"差异。由此产生的差异可能如下所示:

扩散 -git ...
久远 模式 100644
 模式 100755

我们建议在 Windows 上全面禁用权限检查,以避免出现该问题:

# 全面禁用机器的执行位检查
Git 配置 --全球 core.fileMode 错误

对于因本地配置而出现此问题的现有版本库,还可采用

# 移除该版本库的本地选项,以应用全局选项
Git 配置 --未设定 core.filemode

# 删除所有子模块的本地选项
Git 子模组 执行 --递归 Git 配置 --未设定 core.filemode