diff --git a/src/modules/simulation/gz_bridge/CMakeLists.txt b/src/modules/simulation/gz_bridge/CMakeLists.txt index 5fdc455cc8..531657503e 100644 --- a/src/modules/simulation/gz_bridge/CMakeLists.txt +++ b/src/modules/simulation/gz_bridge/CMakeLists.txt @@ -31,43 +31,13 @@ # ############################################################################ -if(NOT DEFINED ENV{GZ_DISTRO}) - set(GZ_DISTRO "harmonic" CACHE STRING "Gazebo distribution to use") +if(NOT DEFINED ENV{GZ_DISTRO} OR NOT "$ENV{GZ_DISTRO}" STREQUAL "harmonic") + find_package(gz-transport NAMES gz-transport14 gz-transport13) else() - set(GZ_DISTRO $ENV{GZ_DISTRO}) + find_package(gz-transport NAMES gz-transport13) endif() -# Define library version combinations for different Gazebo distributions -# https://github.com/gazebo-tooling/gazebodistro/blob/master/collection-harmonic.yaml -if(GZ_DISTRO STREQUAL "harmonic") - set(GZ_CMAKE_VERSION "3") - set(GZ_MSGS_VERSION "10") - set(GZ_TRANSPORT_VERSION "13") - set(GZ_PLUGIN_VERSION "2") - set(GZ_SIM_VERSION "8") - set(GZ_SENSORS_VERSION "8") - message(STATUS "Using Gazebo Harmonic (cmake:${GZ_CMAKE_VERSION}, msgs:${GZ_MSGS_VERSION}, transport:${GZ_TRANSPORT_VERSION})") -elseif(GZ_DISTRO STREQUAL "ionic") - set(GZ_CMAKE_VERSION "4") - set(GZ_MSGS_VERSION "11") - set(GZ_TRANSPORT_VERSION "14") - set(GZ_PLUGIN_VERSION "3") - set(GZ_SIM_VERSION "9") - set(GZ_SENSORS_VERSION "9") - message(STATUS "Using Gazebo Ionic (cmake:${GZ_CMAKE_VERSION}, msgs:${GZ_MSGS_VERSION}, transport:${GZ_TRANSPORT_VERSION})") -else() - message(FATAL_ERROR "Unknown Gazebo distribution: ${GZ_DISTRO}. Valid options are: harmonic or ionic") -endif() - -# Use gz-transport as litmus test for prescence of gz -find_package(gz-transport${GZ_TRANSPORT_VERSION}) - -if (gz-transport${GZ_TRANSPORT_VERSION}_FOUND) - - find_package(gz-cmake${GZ_CMAKE_VERSION} REQUIRED) - find_package(gz-msgs${GZ_MSGS_VERSION} REQUIRED) - find_package(Protobuf REQUIRED) - +if (gz-transport_FOUND) px4_add_module( MODULE modules__simulation__gz_bridge MAIN gz_bridge @@ -87,7 +57,7 @@ if (gz-transport${GZ_TRANSPORT_VERSION}_FOUND) DEPENDS mixer_module px4_work_queue - gz-transport${GZ_TRANSPORT_VERSION}::core + gz-transport${gz-transport_VERSION_MAJOR}::core MODULE_CONFIG module.yaml ) diff --git a/src/modules/simulation/gz_plugins/CMakeLists.txt b/src/modules/simulation/gz_plugins/CMakeLists.txt index 8ee1bdd6ed..eab0df2204 100644 --- a/src/modules/simulation/gz_plugins/CMakeLists.txt +++ b/src/modules/simulation/gz_plugins/CMakeLists.txt @@ -33,45 +33,19 @@ project(px4_gz_plugins) -if(NOT DEFINED ENV{GZ_DISTRO}) - set(GZ_DISTRO "harmonic" CACHE STRING "Gazebo distribution to use") +if(NOT DEFINED ENV{GZ_DISTRO} OR NOT "$ENV{GZ_DISTRO}" STREQUAL "harmonic") + find_package(gz-transport NAMES gz-transport14 gz-transport13 gz-transport12) + find_package(gz-sim NAMES gz-sim9 gz-sim8) + find_package(gz-sensors NAMES gz-sensors9 gz-sensors8) + find_package(gz-plugin NAMES gz-plugin3 gz-plugin2 COMPONENTS register) else() - set(GZ_DISTRO $ENV{GZ_DISTRO}) + find_package(gz-transport NAMES gz-transport13) + find_package(gz-sim NAMES gz-sim8) + find_package(gz-sensors NAMES gz-sensors8) + find_package(gz-plugin NAMES gz-plugin2 COMPONENTS register) endif() -# Define library version combinations for different Gazebo distributions -# https://github.com/gazebo-tooling/gazebodistro/blob/master/collection-harmonic.yaml -if(GZ_DISTRO STREQUAL "harmonic") - set(GZ_CMAKE_VERSION "3") - set(GZ_MSGS_VERSION "10") - set(GZ_TRANSPORT_VERSION "13") - set(GZ_PLUGIN_VERSION "2") - set(GZ_SIM_VERSION "8") - set(GZ_SENSORS_VERSION "8") - message(STATUS "Using Gazebo Harmonic (cmake:${GZ_CMAKE_VERSION}, msgs:${GZ_MSGS_VERSION}, transport:${GZ_TRANSPORT_VERSION})") -elseif(GZ_DISTRO STREQUAL "ionic") - set(GZ_CMAKE_VERSION "4") - set(GZ_MSGS_VERSION "11") - set(GZ_TRANSPORT_VERSION "14") - set(GZ_PLUGIN_VERSION "3") - set(GZ_SIM_VERSION "9") - set(GZ_SENSORS_VERSION "9") - message(STATUS "Using Gazebo Ionic (cmake:${GZ_CMAKE_VERSION}, msgs:${GZ_MSGS_VERSION}, transport:${GZ_TRANSPORT_VERSION})") -else() - message(FATAL_ERROR "Unknown Gazebo distribution: ${GZ_DISTRO}. Valid options are: harmonic or ionic") -endif() - -# Use gz-transport as litmus test for presence of gz -find_package(gz-transport${GZ_TRANSPORT_VERSION}) - -if (gz-transport${GZ_TRANSPORT_VERSION}_FOUND) - find_package(gz-cmake${GZ_CMAKE_VERSION} REQUIRED) - find_package(gz-msgs${GZ_MSGS_VERSION} REQUIRED) - find_package(Protobuf REQUIRED) - find_package(gz-plugin${GZ_PLUGIN_VERSION} REQUIRED COMPONENTS register) - find_package(gz-sim${GZ_SIM_VERSION} REQUIRED) - find_package(gz-sensors${GZ_SENSORS_VERSION} REQUIRED) - +if (gz-transport_FOUND) # Create a flat output directory for all plugin libraries set(PX4_GZ_PLUGIN_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}" CACHE PATH "Directory for all Gazebo plugin libraries") file(MAKE_DIRECTORY ${PX4_GZ_PLUGIN_OUTPUT_DIR}) diff --git a/src/modules/simulation/gz_plugins/optical_flow/CMakeLists.txt b/src/modules/simulation/gz_plugins/optical_flow/CMakeLists.txt index 2a57ba3c25..21c7afc3a3 100644 --- a/src/modules/simulation/gz_plugins/optical_flow/CMakeLists.txt +++ b/src/modules/simulation/gz_plugins/optical_flow/CMakeLists.txt @@ -37,7 +37,7 @@ project(OpticalFlowSystem) include(${CMAKE_CURRENT_SOURCE_DIR}/optical_flow.cmake) # Find OpenCV -find_package(OpenCV REQUIRED) +find_package(OpenCV REQUIRED COMPONENTS core imgproc) add_library(${PROJECT_NAME} SHARED OpticalFlowSensor.cpp @@ -46,10 +46,10 @@ add_library(${PROJECT_NAME} SHARED target_link_libraries(${PROJECT_NAME} PUBLIC px4_gz_msgs - PUBLIC gz-sensors${GZ_SENSORS_VERSION}::gz-sensors${GZ_SENSORS_VERSION} - PUBLIC gz-plugin${GZ_PLUGIN_VERSION}::gz-plugin${GZ_PLUGIN_VERSION} - PUBLIC gz-sim${GZ_SIM_VERSION}::gz-sim${GZ_SIM_VERSION} - PUBLIC gz-transport${GZ_TRANSPORT_VERSION}::gz-transport${GZ_TRANSPORT_VERSION} + PUBLIC gz-sensors${gz-sensors_VERSION_MAJOR}::gz-sensors${gz-sensors_VERSION_MAJOR} + PUBLIC gz-plugin${gz-plugin_VERSION_MAJOR}::gz-plugin${gz-plugin_VERSION_MAJOR} + PUBLIC gz-sim${gz-sim_VERSION_MAJOR}::gz-sim${gz-sim_VERSION_MAJOR} + PUBLIC gz-transport${gz-transport_VERSION_MAJOR}::gz-transport${gz-transport_VERSION_MAJOR} PUBLIC ${OpenCV_LIBS} PUBLIC ${OpticalFlow_LIBS} ) diff --git a/src/modules/simulation/gz_plugins/template_plugin/CMakeLists.txt b/src/modules/simulation/gz_plugins/template_plugin/CMakeLists.txt index f5e2935ef6..c7e582fd9f 100644 --- a/src/modules/simulation/gz_plugins/template_plugin/CMakeLists.txt +++ b/src/modules/simulation/gz_plugins/template_plugin/CMakeLists.txt @@ -48,10 +48,10 @@ add_library(${PROJECT_NAME} SHARED target_link_libraries(${PROJECT_NAME} PUBLIC px4_gz_msgs - PUBLIC gz-sensors${GZ_SENSORS_VERSION}::gz-sensors${GZ_SENSORS_VERSION} - PUBLIC gz-plugin${GZ_PLUGIN_VERSION}::gz-plugin${GZ_PLUGIN_VERSION} - PUBLIC gz-sim${GZ_SIM_VERSION}::gz-sim${GZ_SIM_VERSION} - PUBLIC gz-transport${GZ_TRANSPORT_VERSION}::gz-transport${GZ_TRANSPORT_VERSION} + PUBLIC gz-sensors${gz-sensors_VERSION_MAJOR}::gz-sensors${gz-sensors_VERSION_MAJOR} + PUBLIC gz-plugin${gz-plugin_VERSION_MAJOR}::gz-plugin${gz-plugin_VERSION_MAJOR} + PUBLIC gz-sim${gz-sim_VERSION_MAJOR}::gz-sim${gz-sim_VERSION_MAJOR} + PUBLIC gz-transport${gz-transport_VERSION_MAJOR}::gz-transport${gz-transport_VERSION_MAJOR} # Add other dependencies as needed # PUBLIC ${OtherLib_LIBS} )