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