From 2d08e201356a55b2142b1b82eabe81e0b3109e2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Gonz=C3=A1lez?= Date: Thu, 1 Dec 2022 11:10:46 +0100 Subject: [PATCH 1/5] Refs #16246. Avoid auto linkage if user uses cmake MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ricardo González --- src/cpp/CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt index da35d036..67ed3e2b 100644 --- a/src/cpp/CMakeLists.txt +++ b/src/cpp/CMakeLists.txt @@ -52,7 +52,12 @@ elseif(NOT EPROSIMA_INSTALLER) set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION}) set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR}) - target_compile_definitions(${PROJECT_NAME} PRIVATE ${PROJECT_NAME_UPPER}_SOURCE) + target_compile_definitions(${PROJECT_NAME} + PRIVATE + ${PROJECT_NAME_UPPER}_SOURCE + INTERFACE + $<$:${PROJECT_NAME_UPPER}_NO_LIB> + ) # Define public headers target_include_directories(${PROJECT_NAME} PUBLIC @@ -68,7 +73,6 @@ elseif(NOT EPROSIMA_INSTALLER) get_target_property(TARGET_TYPE ${PROJECT_NAME} TYPE) if(TARGET_TYPE STREQUAL "SHARED_LIBRARY") # Export symbols in DLL library - target_compile_definitions(${PROJECT_NAME} PUBLIC ${PROJECT_NAME_UPPER}_DYN_LINK) set_target_properties(${PROJECT_NAME} PROPERTIES PDB_NAME_DEBUG "${PROJECT_NAME}d-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" PDB_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/symbols" From 80de873825a85b83331b8a094a850ea6b102dea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Gonz=C3=A1lez?= Date: Fri, 2 Dec 2022 15:36:31 +0100 Subject: [PATCH 2/5] Refs #16246. Joining properties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ricardo González --- src/cpp/CMakeLists.txt | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt index 67ed3e2b..99191915 100644 --- a/src/cpp/CMakeLists.txt +++ b/src/cpp/CMakeLists.txt @@ -57,6 +57,8 @@ elseif(NOT EPROSIMA_INSTALLER) ${PROJECT_NAME_UPPER}_SOURCE INTERFACE $<$:${PROJECT_NAME_UPPER}_NO_LIB> + PUBLIC + $<$,"SHARED_LIBRARY">:${PROJECT_NAME_UPPER}_DYN_LINK> ) # Define public headers @@ -66,25 +68,16 @@ elseif(NOT EPROSIMA_INSTALLER) ) if(MSVC OR MSVC_IDE) - set_target_properties(${PROJECT_NAME} PROPERTIES RELEASE_POSTFIX -${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}) - set_target_properties(${PROJECT_NAME} PROPERTIES RELWITHDEBINFO_POSTFIX -${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}) - set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX d-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}) - - get_target_property(TARGET_TYPE ${PROJECT_NAME} TYPE) - if(TARGET_TYPE STREQUAL "SHARED_LIBRARY") - # Export symbols in DLL library - set_target_properties(${PROJECT_NAME} PROPERTIES - PDB_NAME_DEBUG "${PROJECT_NAME}d-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" - PDB_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/symbols" - ) - else() - # Rename the library to have a "lib" before. - set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME lib${PROJECT_NAME}) - set_target_properties(${PROJECT_NAME} PROPERTIES - COMPILE_PDB_NAME_DEBUG "lib${PROJECT_NAME}d-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" - COMPILE_PDB_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/symbols" - ) - endif() + set_target_properties(${PROJECT_NAME} PROPERTIES + RELEASE_POSTFIX -${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + RELWITHDEBINFO_POSTFIX -${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + DEBUG_POSTFIX d-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + $<$,"SHARED_LIBRARY">:PDB_NAME_DEBUG;"${PROJECT_NAME}d-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"> + $<$,"SHARED_LIBRARY">:PDB_OUTPUT_DIRECTORY_DEBUG;"${CMAKE_CURRENT_BINARY_DIR}/symbols"> + $<$,"STATIC_LIBRARY">:OUTPUT_NAME;lib${PROJECT_NAME}> + $<$,"STATIC_LIBRARY">:COMPILE_PDB_NAME_DEBUG;"lib${PROJECT_NAME}d-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"> + $<$,"STATIC_LIBRARY">:COMPILE_PDB_OUTPUT_DIRECTORY_DEBUG;"${CMAKE_CURRENT_BINARY_DIR}/symbols"> + ) # For installing purpose. if(EPROSIMA_INSTALLER_MINION) From cec0c8bb0704561b18a6ff9130f3d025aed7265a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Gonz=C3=A1lez?= Date: Sat, 3 Dec 2022 09:12:33 +0100 Subject: [PATCH 3/5] Refs #16246. Revert generator expressions usage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ricardo González --- src/cpp/CMakeLists.txt | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt index 99191915..9c1b7366 100644 --- a/src/cpp/CMakeLists.txt +++ b/src/cpp/CMakeLists.txt @@ -58,7 +58,7 @@ elseif(NOT EPROSIMA_INSTALLER) INTERFACE $<$:${PROJECT_NAME_UPPER}_NO_LIB> PUBLIC - $<$,"SHARED_LIBRARY">:${PROJECT_NAME_UPPER}_DYN_LINK> + $<$,SHARED_LIBRARY>:${PROJECT_NAME_UPPER}_DYN_LINK> ) # Define public headers @@ -72,13 +72,24 @@ elseif(NOT EPROSIMA_INSTALLER) RELEASE_POSTFIX -${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} RELWITHDEBINFO_POSTFIX -${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} DEBUG_POSTFIX d-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} - $<$,"SHARED_LIBRARY">:PDB_NAME_DEBUG;"${PROJECT_NAME}d-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"> - $<$,"SHARED_LIBRARY">:PDB_OUTPUT_DIRECTORY_DEBUG;"${CMAKE_CURRENT_BINARY_DIR}/symbols"> - $<$,"STATIC_LIBRARY">:OUTPUT_NAME;lib${PROJECT_NAME}> - $<$,"STATIC_LIBRARY">:COMPILE_PDB_NAME_DEBUG;"lib${PROJECT_NAME}d-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"> - $<$,"STATIC_LIBRARY">:COMPILE_PDB_OUTPUT_DIRECTORY_DEBUG;"${CMAKE_CURRENT_BINARY_DIR}/symbols"> ) + get_target_property(TARGET_TYPE ${PROJECT_NAME} TYPE) + if(TARGET_TYPE STREQUAL "SHARED_LIBRARY") + # Export symbols in DLL library + set_target_properties(${PROJECT_NAME} PROPERTIES + PDB_NAME_DEBUG ${PROJECT_NAME}d-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + PDB_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/symbols" + ) + else() + # Rename the library to have a "lib" before. + set_target_properties(${PROJECT_NAME} PROPERTIES + OUTPUT_NAME lib${PROJECT_NAME} + COMPILE_PDB_NAME_DEBUG lib${PROJECT_NAME}d-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + COMPILE_PDB_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/symbols" + ) + endif() + # For installing purpose. if(EPROSIMA_INSTALLER_MINION) set(MSVCARCH_EXTENSION "_${MSVC_ARCH}") From 8fffaa73346672f1922c15ef95104641f2aaf19a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Gonz=C3=A1lez?= Date: Sat, 3 Dec 2022 09:16:55 +0100 Subject: [PATCH 4/5] Refs #16246. Joining properties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ricardo González --- src/cpp/CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt index 9c1b7366..1f20d7c3 100644 --- a/src/cpp/CMakeLists.txt +++ b/src/cpp/CMakeLists.txt @@ -49,8 +49,10 @@ elseif(NOT EPROSIMA_INSTALLER) # Create library add_library(${PROJECT_NAME} ${${PROJECT_NAME}_SOURCES}) set_common_compile_options(${PROJECT_NAME}) - set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION}) - set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR}) + set_target_properties(${PROJECT_NAME} PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR} + ) target_compile_definitions(${PROJECT_NAME} PRIVATE From 88b2595fbdbea1830eb2ac66f1c1d5545b116ace Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Gonz=C3=A1lez?= Date: Thu, 12 Jan 2023 11:46:53 +0100 Subject: [PATCH 5/5] Refs #16246. Fix usage of cmake generator expression MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ricardo González --- src/cpp/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt index 1f20d7c3..222d1173 100644 --- a/src/cpp/CMakeLists.txt +++ b/src/cpp/CMakeLists.txt @@ -60,7 +60,7 @@ elseif(NOT EPROSIMA_INSTALLER) INTERFACE $<$:${PROJECT_NAME_UPPER}_NO_LIB> PUBLIC - $<$,SHARED_LIBRARY>:${PROJECT_NAME_UPPER}_DYN_LINK> + $<$,SHARED_LIBRARY>:${PROJECT_NAME_UPPER}_DYN_LINK> ) # Define public headers