From d497072b01172abbb79861f43a1d97a895ef6a6d Mon Sep 17 00:00:00 2001 From: Jan Gutsche Date: Fri, 17 Jul 2026 21:46:58 +0200 Subject: [PATCH 1/2] build: use Ninja for workspace builds --- pixi.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pixi.toml b/pixi.toml index daaefba65..9a1c1efce 100644 --- a/pixi.toml +++ b/pixi.toml @@ -22,11 +22,11 @@ format = {cmd = "sh -c 'pre-commit run --all-files --hook-stage \"${PRE_COMMIT_S # Use broad warnings and treat them as errors for repository code. # C++ also enables pedantic diagnostics. C keeps pedantic diagnostics non-fatal because ROS generators emit C code # that is not pedantic-clean. -cmd = "colcon build --symlink-install --packages-skip zed_wrapper zed_components zed_msgs zed_ros2 --cmake-args -G 'Unix Makefiles' -DCMAKE_C_FLAGS='-Wall -Wextra -Werror -Wno-error=pedantic' -DCMAKE_CXX_FLAGS='-Wall -Wextra -Wpedantic -Werror' " +cmd = "colcon build --symlink-install --packages-skip zed_wrapper zed_components zed_msgs zed_ros2 --cmake-args -G Ninja -DCMAKE_C_FLAGS='-Wall -Wextra -Werror -Wno-error=pedantic' -DCMAKE_CXX_FLAGS='-Wall -Wextra -Wpedantic -Werror' " description = "Builds all ROS 2 packages. Add --packages-select to build specific packages." [feature.robot.tasks.build] -cmd = "colcon build --symlink-install --cmake-args -G 'Unix Makefiles' -DCMAKE_C_FLAGS='-Wall -Wextra -Werror -Wno-error=pedantic' -DCMAKE_CXX_FLAGS='-Wall -Wextra -Wpedantic -Werror' " +cmd = "colcon build --symlink-install --cmake-args -G Ninja -DCMAKE_C_FLAGS='-Wall -Wextra -Werror -Wno-error=pedantic' -DCMAKE_CXX_FLAGS='-Wall -Wextra -Wpedantic -Werror' " description = "Builds all ROS 2 packages. Add --packages-select to build specific packages." [tasks.clean] From 5b2128a8daad58a31bf3b44a82776f0ac68ab398 Mon Sep 17 00:00:00 2001 From: Jan Gutsche Date: Fri, 17 Jul 2026 22:31:26 +0200 Subject: [PATCH 2/2] fix: avoid domain bridge Ninja output collision --- src/lib/domain_bridge/CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lib/domain_bridge/CMakeLists.txt b/src/lib/domain_bridge/CMakeLists.txt index 168688249..393e1d3cf 100644 --- a/src/lib/domain_bridge/CMakeLists.txt +++ b/src/lib/domain_bridge/CMakeLists.txt @@ -74,7 +74,13 @@ add_executable(${PROJECT_NAME}_exec ament_target_dependencies(${PROJECT_NAME}_exec "rclcpp_components") -set_target_properties(${PROJECT_NAME}_exec PROPERTIES OUTPUT_NAME ${PROJECT_NAME} PREFIX "") +# Keep the executable output separate from the interface generation target. +# Ninja requires every generated path to have a single rule. +set_target_properties(${PROJECT_NAME}_exec PROPERTIES + OUTPUT_NAME ${PROJECT_NAME} + PREFIX "" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin" +) target_link_libraries(${PROJECT_NAME}_exec ${PROJECT_NAME}_lib