diff --git a/cmake/gz_msgs_generate.cmake b/cmake/gz_msgs_generate.cmake index 01ee3182..efd430a2 100644 --- a/cmake/gz_msgs_generate.cmake +++ b/cmake/gz_msgs_generate.cmake @@ -28,7 +28,9 @@ function(gz_msgs_generate_messages_impl) _gz_msgs_proto_pkg_to_string(${generate_messages_PROTO_PACKAGE} gen_dir) _gz_msgs_proto_pkg_to_path(${generate_messages_PROTO_PACKAGE} proto_package_dir) set(output_directory ${generate_messages_OUTPUT_DIRECTORY}) + file(MAKE_DIRECTORY ${output_directory}) + file(MAKE_DIRECTORY ${output_directory}/${proto_package_dir}) foreach(proto_file ${generate_messages_INPUT_PROTOS}) gz_msgs_protoc( @@ -216,7 +218,7 @@ function(gz_msgs_generate_messages_lib) OUTPUT_FILENAME "${target_name}.gz_desc" ) - add_library(${target_name} SHARED ${gen_sources} ${gen_factory_sources} ${target_name}.gz_desc) + add_library(${target_name} SHARED ${generated_sources}) foreach(dep ${generate_messages_DEPENDENCIES}) add_dependencies(${target_name} ${dep}) @@ -244,8 +246,8 @@ function(gz_msgs_generate_messages_lib) RUNTIME DESTINATION ${GZ_BIN_INSTALL_DIR} COMPONENT libraries) - install(FILES ${gen_headers} ${gen_factory_headers} DESTINATION ${GZ_INCLUDE_INSTALL_DIR_FULL}/${proto_package_dir}) - install(FILES ${gen_detail_headers} DESTINATION ${GZ_INCLUDE_INSTALL_DIR_FULL}/${proto_package_dir}/details) + install(FILES ${generated_headers} DESTINATION ${GZ_INCLUDE_INSTALL_DIR_FULL}/${proto_package_dir}) + install(FILES ${generated_detail_headers} DESTINATION ${GZ_INCLUDE_INSTALL_DIR_FULL}/${proto_package_dir}/details) install(FILES ${output_directory}/${target_name}.gz_desc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/gz/protos/) if (NOT GZ_PYTHON_INSTALL_PATH) @@ -262,7 +264,7 @@ function(gz_msgs_generate_messages_lib) set(GZ_PYTHON_INSTALL_PATH ${GZ_LIB_INSTALL_DIR}/python) endif() endif() - install(FILES ${gen_sources_py} DESTINATION ${GZ_PYTHON_INSTALL_PATH}/gz/msgs${GZ_MSGS_VER}) + install(FILES ${generated_python} DESTINATION ${GZ_PYTHON_INSTALL_PATH}/gz/msgs${GZ_MSGS_VER}) set(component_name ${generate_messages_TARGET}) set(component_pkg_name ${target_name}) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 0558da8f..cfddcc8d 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -56,7 +56,7 @@ gz_msgs_generate_desc_impl( PROTO_PATH ${PROJECT_SOURCE_DIR}/proto DEPENDENCY_DESCRIPTIONS ${depends_msgs_desc} OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/gz_msgs_gen - OUTPUT_FILENAME "gz-msgs${PROJECT_VERSION_MAJOR}.gz_desc" + OUTPUT_FILENAME gz-msgs${PROJECT_VERSION_MAJOR}.gz_desc ) ################################################## @@ -69,11 +69,21 @@ gz_create_core_library(SOURCES src/MessageFactory.cc src/DynamicFactory.cc ${msgs_sources} + gz-msgs${PROJECT_VERSION_MAJOR}.gz_desc ) target_include_directories(${PROJECT_LIBRARY_TARGET_NAME} PUBLIC "$") +set_target_properties( + ${PROJECT_LIBRARY_TARGET_NAME} + PROPERTIES + SOVERSION ${PROJECT_VERSION_MAJOR} + VERSION ${PROJECT_VERSION_FULL} + GZ_MSGS_DESC_FILE "\$\{_IMPORT_PREFIX\}/share/gz/protos/gz-msgs${PROJECT_VERSION_MAJOR}.gz_desc" + ) +set_property(TARGET ${PROJECT_LIBRARY_TARGET_NAME} PROPERTY EXPORT_PROPERTIES "GZ_MSGS_DESC_FILE") + include(GzRelocatableBinaries) gz_add_get_install_prefix_impl(GET_INSTALL_PREFIX_FUNCTION gz::msgs::getInstallPrefix GET_INSTALL_PREFIX_HEADER gz/msgs/InstallationDirectories.hh diff --git a/gz-msgs-extras.cmake.in b/gz-msgs-extras.cmake.in index 8902f963..e2c656ca 100644 --- a/gz-msgs-extras.cmake.in +++ b/gz-msgs-extras.cmake.in @@ -35,11 +35,11 @@ set(@PROJECT_NAME@_FACTORY_GENERATOR_SCRIPT ${@PROJECT_NAME@_INSTALL_PATH}/bin/$ function(gz_msgs_generate_messages) set(options "") - set(oneValueArgs MSGS_PATH TARGET PROTO_PACKAGE) + set(oneValueArgs MSGS_PATH TARGET PROTO_PACKAGE OUTPUT_DIRECTORY) set(multiValueArgs MSGS_PROTOS DEPENDENCIES) cmake_parse_arguments(generate_messages "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - gz_msgs_generate_messages_impl( + gz_msgs_generate_messages_lib( MSGS_GEN_SCRIPT ${@PROJECT_NAME@_PROTO_GENERATOR_SCRIPT} FACTORY_GEN_SCRIPT