FLTK logo

[master] 89b9575 - CMake: add target_include_directories() for optional libs (#954)

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[master] 89b9575 - CMake: add target_include_directories() for optional libs (#954) "Albrecht Schlosser" 10:02 Apr 21  
 
commit 89b957586e4ae2343c35284be00d6afa08dc37ca
Author:     Albrecht Schlosser <albrechts.fltk@online.de>
AuthorDate: Sun Apr 21 18:53:22 2024 +0200
Commit:     Albrecht Schlosser <albrechts.fltk@online.de>
CommitDate: Sun Apr 21 18:53:22 2024 +0200

    CMake: add target_include_directories() for optional libs (#954)
    
    This ensures that header files for libraries found by `pkg-config`
    (pkg_check_modules) in non-system directories will be found by the
    compiler during the compilation of the FLTK library.
    
    This issue has been reported in PR #954 related to builds with Conan
    where some header files are not in system locations.

 src/CMakeLists.txt | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git src/CMakeLists.txt src/CMakeLists.txt
index 2770e9b..329358b 100644
--- src/CMakeLists.txt
+++ src/CMakeLists.txt
@@ -638,12 +638,17 @@ endif()
 #
 # Prepare optional libs for shared and static FLTK libraries.
 #
-# Note: 'OPTIONAL_LIBS' is a CMake 'list' but must not contain arbitrary
+# Notes:
+#  -  'OPTIONAL_LIBS' is a CMake 'list' but must not contain arbitrary
 #     CMake targets because these targets would be propagated to
 #     consumer projects. The macro below simplifies adding link
 #     libraries of such targets to 'OPTIONAL_LIBS'.
+#  -  'OPTIONAL_INCLUDES' is a similar CMake list that defines additional
+#     include directories.
+#
+# This macro appends link libraries to 'OPTIONAL_LIBS' and include
+# directories to 'OPTIONAL_INCLUDES'.
 #
-# This macro appends interface targets to 'OPTIONAL_LIBS'.
 # Input:
 # 'targets' may be a CMake list of targets or a single target.
 #     It must be quoted if multiple targets are to be added in
@@ -654,14 +659,19 @@ endif()
 macro(append_optional_libs targets)
   foreach(_target ${targets})
     get_target_property(_link_libraries ${_target} INTERFACE_LINK_LIBRARIES)
+    get_target_property(_include_dirs ${_target} INTERFACE_INCLUDE_DIRECTORIES)
     list(APPEND OPTIONAL_LIBS ${_link_libraries})
-    list(APPEND OPTIONAL_LIBS )
+    if(_include_dirs)
+      list(APPEND OPTIONAL_INCLUDES ${_include_dirs})
+    endif()
   endforeach()
   unset(_target)
   unset(_link_libraries)
+  unset(_include_dirs)
 endmacro()
 
 set(OPTIONAL_LIBS)
+set(OPTIONAL_INCLUDES)
 
 if(LIB_dl)
   list(APPEND OPTIONAL_LIBS ${LIB_dl})
@@ -796,11 +806,13 @@ if(UNIX AND FLTK_BACKEND_WAYLAND)
 endif(UNIX AND FLTK_BACKEND_WAYLAND)
 
 list(REMOVE_DUPLICATES OPTIONAL_LIBS)
+list(REMOVE_DUPLICATES OPTIONAL_INCLUDES)
 
 #######################################################################
 
 fl_add_library(fltk STATIC "${STATIC_FILES}")
 target_link_libraries(fltk PRIVATE ${OPTIONAL_LIBS})
+target_include_directories(fltk PRIVATE ${OPTIONAL_INCLUDES})
 
 #######################################################################
 
@@ -851,6 +863,7 @@ if(FLTK_BUILD_SHARED_LIBS AND NOT MSVC)
 
   fl_add_library(fltk SHARED "${SHARED_FILES}")
   target_link_libraries(fltk-shared PRIVATE ${OPTIONAL_LIBS})
+  target_include_directories(fltk-shared PRIVATE ${OPTIONAL_INCLUDES})
 
   ###################################################################
 
@@ -920,6 +933,7 @@ if(FLTK_BUILD_SHARED_LIBS AND MSVC)
 
   fl_add_library(fltk SHARED "${SOURCES}")
   target_link_libraries(fltk-shared PRIVATE ${OPTIONAL_LIBS})
+  target_include_directories(fltk-shared PRIVATE ${OPTIONAL_INCLUDES})
 
   if(FLTK_USE_BUNDLED_JPEG)
     target_link_libraries(fltk-shared PUBLIC fltk::jpeg-shared)
Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.