|
|
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 ] | |
|
| |