The build runs brew update and then pours Gazebo from one pinned tap commit while the rest of the install, including protobuf, comes from current Homebrew. A release in either repo fails the check with no commit here, and the GitHub-hosted image moves on its own, so the job cannot be a closed set. Drop the build and the weekly pin refresh. The setup script, the pins, and the refresh script stay for local use. Assisted-by: Grok:grok-4.7 Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>
4.8 KiB
macOS Development Environment
The following instructions set up a PX4 development environment on macOS. This environment can be used to build PX4 for:
- Pixhawk and other NuttX-based hardware
- Gazebo Simulation (Gazebo Harmonic)
It works on both Intel and Apple Silicon Macs.
::: tip This setup is supported by the PX4 dev team. To build for other targets you will need to use a different OS or an unsupported development environment. :::
Development Environment Setup
Prerequisites
-
Install Xcode Command Line Tools, which provide
git,make, and the Appleclangcompiler:xcode-select --install -
Install Homebrew by following the installation instructions. The setup script below also installs Homebrew if it is missing.
-
Increase the open-file limit. The PX4 build opens many files simultaneously and the macOS default limit (256) is too low. You may see
"LD: too many open files"errors without this.Add the following line to your shell startup file so it applies to every new terminal session. macOS defaults to zsh since Catalina, so add it to
~/.zshrc(use~/.bashrcif you use bash):echo "ulimit -S -n 2048" >> ~/.zshrcThen open a new terminal (or run
source ~/.zshrc) for the change to take effect.
Install Development Tools
-
Download PX4 Source Code:
git clone https://github.com/PX4/PX4-Autopilot.git cd PX4-Autopilot git submodule update --init --recursive --force -
Install development environment libraries from the macos.sh helper script:
./Tools/setup/macos.sh --sim-tools::: info The setup script creates a Python virtual environment at
.venvin the repo root and installs all Python dependencies into it. This keeps PX4's Python requirements isolated from your system Python and avoids conflicts with Homebrew's externally-managed Python.Activate it before building:
source .venv/bin/activateYou'll need to re-run this command in each new terminal session. To activate it automatically when you
cdinto the repo, consider a tool like direnv or add the activation to your~/.zshrc. :::The script installs the NuttX cross-compiler and build tools, the Python dependencies (into the
.venvdescribed above), and with--sim-toolsthe Gazebo simulation stack. It is the source of truth for what gets installed; read macos.sh for the details.::: info Omit
--sim-toolsif you only need to build for NuttX hardware and don't need simulation. All Gazebo dependencies are optional at build time, somake px4_sitlstill works without them.Use
--reinstallto force reinstallation of the Homebrew formulas (useful if something is broken). :::::: info The script installs from third-party Homebrew taps and marks them as trusted (
brew trust) on Homebrew 6.0 and later, which refuses to load formulae from untrusted taps. With--sim-toolsit will prompt for your password, since the XQuartz installer and the JDK link into/Library/Java/JavaVirtualMachinesneedsudo. :::
Gazebo Simulation
The --sim-tools flag installs Gazebo and the libraries PX4's simulation modules build against.
If you skipped --sim-tools during initial setup and want to add simulation later, re-run the setup script with the flag (it is safe to run repeatedly):
./Tools/setup/macos.sh --sim-tools
::: info The script also installs XQuartz. macOS may require you to log out and back in after XQuartz is first installed. :::
Verify Installation
After installation, verify the key tools are available:
# NuttX cross-compiler
arm-none-eabi-gcc --version
# Build tools
cmake --version
ninja --version
# Gazebo (if --sim-tools was used)
gz sim --versions
As a quick smoke test, build and run a simulation target:
make px4_sitl gz_x500
If everything is set up correctly, this will build PX4 SITL and launch a Gazebo simulation with the x500 quadcopter.
Next Steps
Once you have finished setting up the command-line toolchain:
-
Install VSCode (if you prefer using an IDE to the command line).
-
Install the QGroundControl Daily Build
::: tip The daily build includes development tools that are hidden in release builds. It may also provide access to new PX4 features that are not yet supported in release builds. :::
-
Continue to the build instructions.