# Windows 开发环境

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

警告

该工具链的当前版本不能与主代码线一起使用(但可以与稳定版本一起使用)。该工具 基于 Windows WSL2 的开发环境 是强烈推荐的 Windows 11(唯一)替代方案,而且很可能在不久的将来成为受支持的 Windows 解决方案。

TIP

PX4 开发团队支持这种设置。要构建其他目标,您需要使用 不同的操作系统 (或一个 不支持的 Windows 开发环境).

# 安装说明

  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. 在控制台中输入以下命令
    pip3 install --user kconfiglib jsonschema future
    

# 入门

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

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

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

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

    备注

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

    # 克隆 PX4-Autopilot 资源库到主文件夹 & 并行加载子模块
    Git clone --recursive -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':Command not found.).幸运的是,只要在软件源的根目录下执行这两条命令,git 就能帮你做到这一点:

git config core.autocrlf false git config core.eol lf

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

git config --global ...

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

# Unix 权限执行位

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

diff --git ... 旧模式 100644 新模式 100755

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

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

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

# 移除该版本库的本地选项,以应用全局选项
Git config --unset core.filemode 

# 删除所有子模块的本地选项
Git 子模组 foreach --recursive Git config --unset core.filemode