diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 614d93cac1a4f9c58d3dd6714452133e61c46282..35ae3074a972015c37dea270b53e1e90c1fbc347 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,7 @@ # # CMakeLists.txt to build the FLTK library using CMake (www.cmake.org) # -# Copyright 1998-2024 by Bill Spitzak and others. +# Copyright 1998-2025 by Bill Spitzak and others. # # This library is free software. Distribution and use rights are outlined in # the file "COPYING" which should have been included with this file. If this @@ -652,6 +652,9 @@ endif() # ####################################################################### +set(OPTIONAL_LIBS) +set(OPTIONAL_INCLUDES) + macro(append_optional_libs targets) foreach(_target ${targets}) get_target_property(_link_libraries ${_target} INTERFACE_LINK_LIBRARIES) @@ -666,8 +669,15 @@ macro(append_optional_libs targets) unset(_include_dirs) endmacro() -set(OPTIONAL_LIBS) -set(OPTIONAL_INCLUDES) +# Add the required properties for ${OPTIONAL_LIBS} to the given target. +# Note: we must use 'PUBLIC', see GitHub Issue #1173 + +macro(add_optional_libs target) + target_link_libraries (${target} PUBLIC ${OPTIONAL_LIBS}) + target_include_directories(${target} PUBLIC ${OPTIONAL_INCLUDES}) +endmacro() + +# Build the list of optional libs if(LIB_dl) list(APPEND OPTIONAL_LIBS ${LIB_dl}) @@ -679,6 +689,7 @@ endif(USE_THREADS) if(FLTK_USE_X11) list(APPEND OPTIONAL_LIBS ${X11_LIBRARIES}) + list(APPEND OPTIONAL_INCLUDES ${X11_INCLUDE_DIR}) endif(FLTK_USE_X11) if(WIN32) @@ -807,8 +818,7 @@ 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}) +add_optional_libs(fltk) ####################################################################### @@ -846,8 +856,7 @@ if(FLTK_USE_GL) target_include_directories(fltk_gl PUBLIC ${OPENGL_INCLUDE_DIR} ${OPENGL_INCLUDE_DIRS}) # Add "optional libs" (FIXME: this can be optimized, we don't need *all* these libs here) - target_link_libraries(fltk_gl PRIVATE ${OPTIONAL_LIBS}) - target_include_directories(fltk_gl PRIVATE ${OPTIONAL_INCLUDES}) + add_optional_libs(fltk_gl) if(FLTK_OPENGL_GLU_INCLUDE_DIR) target_include_directories(fltk_gl PUBLIC ${FLTK_OPENGL_GLU_INCLUDE_DIR}) @@ -863,8 +872,7 @@ endif(FLTK_USE_GL) 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}) + add_optional_libs(fltk-shared) ################################################################### @@ -909,8 +917,7 @@ if(FLTK_BUILD_SHARED_LIBS AND NOT MSVC) target_include_directories(fltk_gl-shared PUBLIC ${OPENGL_INCLUDE_DIR} ${OPENGL_INCLUDE_DIRS}) # Add "optional libs" (FIXME: this can be optimized, we don't need *all* these libs here) - target_link_libraries(fltk_gl-shared PRIVATE ${OPTIONAL_LIBS}) - target_include_directories(fltk_gl-shared PRIVATE ${OPTIONAL_INCLUDES}) + add_optional_libs(fltk_gl-shared) if(FLTK_OPENGL_GLU_INCLUDE_DIR) target_include_directories(fltk_gl-shared PUBLIC ${FLTK_OPENGL_GLU_INCLUDE_DIR}) @@ -938,8 +945,7 @@ if(FLTK_BUILD_SHARED_LIBS AND MSVC) endif(OPENGL_FOUND) fl_add_library(fltk SHARED "${SOURCES}") - target_link_libraries(fltk-shared PRIVATE ${OPTIONAL_LIBS}) - target_include_directories(fltk-shared PRIVATE ${OPTIONAL_INCLUDES}) + add_optional_libs(fltk-shared) if(FLTK_USE_BUNDLED_JPEG) target_link_libraries(fltk-shared PUBLIC fltk::jpeg-shared)