From 3e8971df4c0cd731eeab94f8bd1cc59c116bbeef Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Fri, 4 Aug 2023 14:07:31 +0000 Subject: [PATCH] Tweak export Signed-off-by: Michael Carroll --- cmake/gz_msgs_generate.cmake | 47 +++++++++++++++++++++++---------- test/integration/CMakeLists.txt | 2 +- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/cmake/gz_msgs_generate.cmake b/cmake/gz_msgs_generate.cmake index fe3c5af6..2ee360d9 100644 --- a/cmake/gz_msgs_generate.cmake +++ b/cmake/gz_msgs_generate.cmake @@ -27,11 +27,16 @@ function(gz_msgs_generate_messages_impl) set(depends_proto_paths) set(depends_includes) - set(output_directory ${PROJECT_BINARY_DIR}/${PROJECT_NAME}-${generate_messages_TARGET}_genmsg) + set(target_name ${PROJECT_NAME}-${generate_messages_TARGET}) + + set(output_directory ${PROJECT_BINARY_DIR}/${target_name}_genmsg) file(MAKE_DIRECTORY ${output_directory}) foreach(dep ${generate_messages_DEPENDENCIES}) get_target_property(msgs_desc_file ${dep} GZ_MSGS_DESC_FILE) + + message(STATUS ${dep} "--" ${msgs_desc_file}) + list(APPEND depends_msgs_desc ${msgs_desc_file}) endforeach() @@ -112,7 +117,7 @@ function(gz_msgs_generate_messages_impl) set(ARGS) list(APPEND ARGS -I${generate_messages_PROTO_PATH}) - list(APPEND ARGS --descriptor_set_out="${generate_messages_TARGET}.gz_desc") + list(APPEND ARGS --descriptor_set_out="${target_name}.gz_desc") foreach(dep ${generate_messages_DEPENDENCIES}) list(APPEND ARGS --descriptor_set_in="${msgs_desc_file}") @@ -121,7 +126,7 @@ function(gz_msgs_generate_messages_impl) list(APPEND ARGS ${generate_messages_INPUT_PROTOS}) add_custom_command( - OUTPUT "${generate_messages_TARGET}.gz_desc" + OUTPUT "${target_name}.gz_desc" COMMAND protobuf::protoc ARGS ${ARGS} DEPENDS ${generate_messages_INPUT_PROTOS} @@ -129,30 +134,29 @@ function(gz_msgs_generate_messages_impl) COMMENT "Generating descriptor set" ) - add_library(${generate_messages_TARGET} SHARED ${gen_sources} ${gen_factory_sources} ${generate_messages_TARGET}.gz_desc) + add_library(${target_name} SHARED ${gen_sources} ${gen_factory_sources} ${target_name}.gz_desc) foreach(dep ${generate_messages_DEPENDENCIES}) - add_dependencies(${generate_messages_TARGET} ${dep}) + add_dependencies(${target_name} ${dep}) endforeach() - target_link_libraries(${generate_messages_TARGET} PUBLIC protobuf::libprotobuf ${generate_messages_MSGS_LIB} ${generate_messages_DEPENDENCIES}) - target_include_directories(${generate_messages_TARGET} PUBLIC + target_link_libraries(${target_name} PUBLIC protobuf::libprotobuf ${generate_messages_MSGS_LIB} ${generate_messages_DEPENDENCIES}) + target_include_directories(${target_name} PUBLIC "$" "$") - set_property(TARGET ${generate_messages_TARGET} PROPERTY EXPORT_PROPERTIES "GZ_MSGS_DESC_FILE") - set_target_properties( - ${generate_messages_TARGET} + ${target_name} PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR} VERSION ${PROJECT_VERSION_FULL} GZ_MSGS_DESC_FILE "\$\{_IMPORT_PREFIX\}/share/protos/${generate_messages_TARGET}.gz_desc" ) + set_property(TARGET ${target_name} PROPERTY EXPORT_PROPERTIES "GZ_MSGS_DESC_FILE") install( - TARGETS ${generate_messages_TARGET} - EXPORT ${PROJECT_NAME}-${generate_messages_TARGET} + TARGETS ${target_name} + EXPORT ${target_name} LIBRARY DESTINATION ${GZ_LIB_INSTALL_DIR} ARCHIVE DESTINATION ${GZ_LIB_INSTALL_DIR} RUNTIME DESTINATION ${GZ_BIN_INSTALL_DIR} @@ -161,10 +165,25 @@ function(gz_msgs_generate_messages_impl) 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 ${output_directory}/${generate_messages_TARGET}.gz_desc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/gz) - install(FILES ${gen_sources_py} DESTINATION ${GZ_PYTHON_INSTALL_PATH}/gz/${GZ_DESIGNATION}${PROJECT_VERSION_MAJOR}) + + if (NOT GZ_PYTHON_INSTALL_PATH) + find_package(Python3 REQUIRED COMPONENTS Interpreter) + if(USE_SYSTEM_PATHS_FOR_PYTHON_INSTALLATION) + if(USE_DIST_PACKAGES_FOR_PYTHON) + string(REPLACE "site-packages" "dist-packages" GZ_PYTHON_INSTALL_PATH ${Python3_SITELIB}) + else() + # Python3_SITELIB might use dist-packages in some platforms + string(REPLACE "dist-packages" "site-packages" GZ_PYTHON_INSTALL_PATH ${Python3_SITELIB}) + endif() + else() + # If not a system installation, respect local paths + 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}) set(component_name ${generate_messages_TARGET}) - set(component_pkg_name ${PROJECT_NAME}-${generate_messages_TARGET}) + set(component_pkg_name ${target_name}) _gz_create_cmake_package(COMPONENT ${component_name}) _gz_create_pkgconfig(COMPONENT ${component_name}) endfunction() diff --git a/test/integration/CMakeLists.txt b/test/integration/CMakeLists.txt index 03618d5d..f0ae4839 100644 --- a/test/integration/CMakeLists.txt +++ b/test/integration/CMakeLists.txt @@ -9,5 +9,5 @@ endif() gz_build_tests(TYPE INTEGRATION SOURCES ${tests} TEST_LIST test_targets) foreach(test ${test_targets}) - target_link_libraries(${test} msgs) + target_link_libraries(${test} ${PROJECT_NAME}-msgs) endforeach()