From 53027213994e97fd0905805bb0422cc0b182ccd1 Mon Sep 17 00:00:00 2001 From: Martin Hierholzer <martin.hierholzer@desy.de> Date: Thu, 3 Dec 2020 10:06:49 +0100 Subject: [PATCH] fix ${@PROJECTNAME@_LIBRARIES} being unusable for header-only libraries If a header-only library requires linking a 3rd party library, the ..._LIBRARIES variable could not be used in depending projects, because it contained NOTFOUND. --- cmake/PROJECT_NAMEConfig.cmake.in.in | 6 +++++- cmake/create_cmake_config_files.cmake | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/cmake/PROJECT_NAMEConfig.cmake.in.in b/cmake/PROJECT_NAMEConfig.cmake.in.in index 92c8207..17f556a 100644 --- a/cmake/PROJECT_NAMEConfig.cmake.in.in +++ b/cmake/PROJECT_NAMEConfig.cmake.in.in @@ -41,7 +41,11 @@ FIND_LIBRARY(@PROJECT_NAME@_LIBRARY @PROJECT_NAME@ set(@PROJECT_NAME@_VERSION "@@PROJECT_NAME@_SOVERSION@") set(@PROJECT_NAME@_INCLUDE_DIRS @@PROJECT_NAME@_INCLUDE_DIRS@) set(@PROJECT_NAME@_LIBRARY_DIRS @@PROJECT_NAME@_LIBRARY_DIRS@) -set(@PROJECT_NAME@_LIBRARIES ${@PROJECT_NAME@_LIBRARY} @@PROJECT_NAME@_LIBRARIES@) +if(@@PROJECT_NAME@_HAS_LIBRARY@) + set(@PROJECT_NAME@_LIBRARIES ${@PROJECT_NAME@_LIBRARY} @@PROJECT_NAME@_LIBRARIES@) +else() + set(@PROJECT_NAME@_LIBRARIES @@PROJECT_NAME@_LIBRARIES@) +endif() set(@PROJECT_NAME@_CXX_FLAGS "@@PROJECT_NAME@_CXX_FLAGS@") set(@PROJECT_NAME@_LINKER_FLAGS "@@PROJECT_NAME@_LINKER_FLAGS@ @@PROJECT_NAME@_LINK_FLAGS@") set(@PROJECT_NAME@_LINK_FLAGS "@@PROJECT_NAME@_LINKER_FLAGS@ @@PROJECT_NAME@_LINK_FLAGS@") diff --git a/cmake/create_cmake_config_files.cmake b/cmake/create_cmake_config_files.cmake index 5a8ce37..44b5a9e 100644 --- a/cmake/create_cmake_config_files.cmake +++ b/cmake/create_cmake_config_files.cmake @@ -61,6 +61,12 @@ foreach(DEPENDENCY ${${PROJECT_NAME}_PUBLIC_DEPENDENCIES}) string(APPEND ${PROJECT_NAME}_PUBLIC_DEPENDENCIES_L "find_package(${DEPENDENCY} REQUIRED)\n") endforeach() +if(TARGET ${PROJECT_NAME}) + set(${PROJECT_NAME}_HAS_LIBRARY 1) +else() + set(${PROJECT_NAME}_HAS_LIBRARY 0) +endif() + # we have nested @-statements, so we have to parse twice: # create the cmake find_package configuration file -- GitLab