various cmake fixes (#25748)

- enable building in a cmake subdirectory:
    - use consistent path to "etc" in build directory
    - add a quick fix for mavlink inclusion with
      `mavlink/<version>/mavlink.h`, presumably the problem does not
      appear normally since somewhere the build root directory is added
      to include paths.
- install gazebo config and plugins, the goal is to enable packaging of
  PX4 sitl binaries.
- fix dependency on dds_topics.h generation in uxrce_dds_client:
  *** No rule to make target 'PX4-Autopilot/src/modules/uxrce_dds_client/dds_topics.h', needed by 'PX4-Autopilot/events/px4.json'.  Stop.
  https://github.com/PX4/PX4-Autopilot/issues/21788

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
This commit is contained in:
Alexander Sherikov
2025-10-17 23:11:00 +04:00
committed by GitHub
parent d2d433290a
commit 6e8f61c551
8 changed files with 37 additions and 9 deletions
+9 -1
View File
@@ -87,7 +87,7 @@ install(
DIRECTORY
${PROJECT_SOURCE_DIR}/posix-configs
${PROJECT_SOURCE_DIR}/test
${CMAKE_BINARY_DIR}/etc
${PX4_BINARY_DIR}/etc
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
DESTINATION
${PROJECT_NAME}
@@ -201,6 +201,14 @@ elseif("${PX4_BOARD}" MATCHES "sitl")
${PROJECT_NAME}/build/px4_sitl_default
)
# gazebo files
install(
FILES
${PROJECT_SOURCE_DIR}/Tools/simulation/gz/server.config
DESTINATION
${PROJECT_NAME}/Tools/simulation/gz
)
# gazebo dirs
install(
DIRECTORY
+1
View File
@@ -92,6 +92,7 @@ target_sources(mavlink_c
target_include_directories(mavlink_c
INTERFACE
${MAVLINK_LIBRARY_DIR}
${MAVLINK_LIBRARY_DIR}/../
${MAVLINK_LIBRARY_DIR}/${CONFIG_MAVLINK_DIALECT}
${MAVLINK_LIBRARY_DIR}/${MAVLINK_DIALECT_UAVIONIX}
)
@@ -67,4 +67,8 @@ else()
PRIVATE ${GSTREAMER_CFLAGS}
PRIVATE ${GSTREAMER_APP_CFLAGS}
)
if (NOT CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION lib/px4_gz_plugins)
endif()
endif()
@@ -50,3 +50,7 @@ target_include_directories(${PROJECT_NAME}
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
PUBLIC px4_gz_msgs
)
if (NOT CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION lib/px4_gz_plugins)
endif()
@@ -63,3 +63,7 @@ target_include_directories(${PROJECT_NAME}
)
add_dependencies(${PROJECT_NAME} OpticalFlow)
if (NOT CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION lib/px4_gz_plugins)
endif()
@@ -35,19 +35,24 @@ include(ExternalProject)
find_package(OpenCV REQUIRED)
if(NOT TARGET OpticalFlow)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(OPTICAL_FLOW_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/OpticalFlow/install")
else()
set(OPTICAL_FLOW_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
endif()
ExternalProject_Add(OpticalFlow
GIT_REPOSITORY https://github.com/PX4/PX4-OpticalFlow.git
GIT_TAG master
PREFIX ${CMAKE_BINARY_DIR}/OpticalFlow
INSTALL_DIR ${CMAKE_BINARY_DIR}/OpticalFlow/install
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR}/OpticalFlow/install/lib/libOpticalFlow.so
INSTALL_DIR ${OPTICAL_FLOW_INSTALL_PREFIX}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${OPTICAL_FLOW_INSTALL_PREFIX}
BUILD_BYPRODUCTS ${OPTICAL_FLOW_INSTALL_PREFIX}/lib/libOpticalFlow.so
UPDATE_DISCONNECTED ON
BUILD_ALWAYS OFF
STEP_TARGETS build
)
ExternalProject_Get_Property(OpticalFlow install_dir)
set(OpticalFlow_INCLUDE_DIRS ${install_dir}/include CACHE INTERNAL "")
set(OpticalFlow_LIBS ${install_dir}/lib/libOpticalFlow.so CACHE INTERNAL "")
set(OpticalFlow_INCLUDE_DIRS ${OPTICAL_FLOW_INSTALL_PREFIX}/include CACHE INTERNAL "")
set(OpticalFlow_LIBS ${OPTICAL_FLOW_INSTALL_PREFIX}/lib/libOpticalFlow.so CACHE INTERNAL "")
endif()
@@ -66,3 +66,7 @@ target_include_directories(${PROJECT_NAME}
# Add dependencies if needed
# add_dependencies(${PROJECT_NAME} ExternalDependency)
if (NOT CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION lib/px4_gz_plugins)
endif()
@@ -63,7 +63,6 @@ else()
endif()
include(ExternalProject)
ExternalProject_Add(
libmicroxrceddsclient_project
PREFIX ${microxrceddsclient_build_dir}
@@ -139,7 +138,6 @@ else()
# -DDEBUG_BUILD
${MAX_CUSTOM_OPT_LEVEL}
SRCS
${CMAKE_CURRENT_BINARY_DIR}/dds_topics.h
uxrce_dds_client.cpp
uxrce_dds_client.h
vehicle_command_srv.cpp