From c2ae9917b3da1ab8216806b0a3b5c6c10753d7cd Mon Sep 17 00:00:00 2001 From: "Vandenplas, Jeremie" Date: Sun, 5 Oct 2025 15:36:56 +0200 Subject: [PATCH 1/3] Comment out add_library --- cmake/stdlib.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/stdlib.cmake b/cmake/stdlib.cmake index 0ec86e299..d5914e3b2 100644 --- a/cmake/stdlib.cmake +++ b/cmake/stdlib.cmake @@ -69,7 +69,7 @@ function(configure_stdlib_target target_name regular_sources_var fypp_files_var list(APPEND all_sources ${${regular_sources_var}}) add_library(${target_name} ${all_sources}) - add_library(${PROJECT_NAME}::${target_name} ALIAS ${target_name}) + #add_library(${PROJECT_NAME}::${target_name} ALIAS ${target_name}) set_target_properties( ${target_name} From cd795abe60df83aadf6b23c243536d4099b197e5 Mon Sep 17 00:00:00 2001 From: Federico Perini Date: Mon, 6 Oct 2025 09:52:28 +0200 Subject: [PATCH 2/3] Guard add_library calls in Findtest-drive.cmake Add if(NOT TARGET) guards around add_library calls to prevent conflicts when the target already exists (e.g., when using stdlib with FetchContent after PR #1033 which adds ALIAS targets automatically). This allows users to use the Find module pattern with libraries that already provide namespaced ALIAS targets. --- config/cmake/Findtest-drive.cmake | 36 ++++++++++++++++++------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/config/cmake/Findtest-drive.cmake b/config/cmake/Findtest-drive.cmake index 8337347a2..cac0827d7 100644 --- a/config/cmake/Findtest-drive.cmake +++ b/config/cmake/Findtest-drive.cmake @@ -88,17 +88,19 @@ foreach(method ${${_pkg}_FIND_METHOD}) if("${_pkg}_FOUND") message(STATUS "Found ${_lib} via pkg-config") - add_library("${_lib}::${_lib}" INTERFACE IMPORTED) - target_link_libraries( - "${_lib}::${_lib}" - INTERFACE - "${${_pkg}_LINK_LIBRARIES}" - ) - target_include_directories( - "${_lib}::${_lib}" - INTERFACE - "${${_pkg}_INCLUDE_DIRS}" - ) + if(NOT TARGET "${_lib}::${_lib}") + add_library("${_lib}::${_lib}" INTERFACE IMPORTED) + target_link_libraries( + "${_lib}::${_lib}" + INTERFACE + "${${_pkg}_LINK_LIBRARIES}" + ) + target_include_directories( + "${_lib}::${_lib}" + INTERFACE + "${${_pkg}_INCLUDE_DIRS}" + ) + endif() break() endif() @@ -118,8 +120,10 @@ foreach(method ${${_pkg}_FIND_METHOD}) "${${_pkg}_BINARY_DIR}" ) - add_library("${_lib}::${_lib}" INTERFACE IMPORTED) - target_link_libraries("${_lib}::${_lib}" INTERFACE "${_lib}") + if(NOT TARGET "${_lib}::${_lib}") + add_library("${_lib}::${_lib}" INTERFACE IMPORTED) + target_link_libraries("${_lib}::${_lib}" INTERFACE "${_lib}") + endif() # We need the module directory in the subproject before we finish the configure stage if(NOT EXISTS "${${_pkg}_BINARY_DIR}/include") @@ -140,8 +144,10 @@ foreach(method ${${_pkg}_FIND_METHOD}) ) FetchContent_MakeAvailable("${_lib}") - add_library("${_lib}::${_lib}" INTERFACE IMPORTED) - target_link_libraries("${_lib}::${_lib}" INTERFACE "${_lib}") + if(NOT TARGET "${_lib}::${_lib}") + add_library("${_lib}::${_lib}" INTERFACE IMPORTED) + target_link_libraries("${_lib}::${_lib}" INTERFACE "${_lib}") + endif() # We need the module directory in the subproject before we finish the configure stage FetchContent_GetProperties("${_lib}" SOURCE_DIR "${_pkg}_SOURCE_DIR") From d6528ec531787ade8926ffeba916650d44e1340b Mon Sep 17 00:00:00 2001 From: Jeremie Vandenplas Date: Wed, 15 Oct 2025 10:51:47 +0200 Subject: [PATCH 3/3] Remove the rule "add_library" Co-authored-by: Federico Perini --- cmake/stdlib.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/stdlib.cmake b/cmake/stdlib.cmake index d5914e3b2..00265327f 100644 --- a/cmake/stdlib.cmake +++ b/cmake/stdlib.cmake @@ -69,7 +69,6 @@ function(configure_stdlib_target target_name regular_sources_var fypp_files_var list(APPEND all_sources ${${regular_sources_var}}) add_library(${target_name} ${all_sources}) - #add_library(${PROJECT_NAME}::${target_name} ALIAS ${target_name}) set_target_properties( ${target_name}