@@ -14,49 +14,57 @@ if(LIBAPPIMAGE_DESKTOP_INTEGRATION_ENABLED)
14
14
add_subdirectory (desktop_integration)
15
15
list (APPEND libappimage_sources "$<TARGET_OBJECTS:appimage_desktop_integration>" )
16
16
endif ()
17
+ if (BUILD_SHARED_LIBS )
18
+ add_library (libappimage SHARED ${libappimage_sources} libappimage_legacy.cpp)
17
19
18
- add_library (libappimage_static STATIC ${libappimage_sources} )
19
- add_library (libappimage SHARED ${libappimage_sources} libappimage_legacy.cpp)
20
+ # For shared libraries, link privately to xdg-basedir
21
+ target_link_libraries (libappimage PRIVATE xdg-basedir)
22
+ else ()
23
+ add_library (libappimage STATIC ${libappimage_sources} )
24
+ # For static libraries, include xdg-basedir object files directly to avoid export issues
25
+ target_sources (libappimage PRIVATE $<TARGET_OBJECTS:xdg-basedir>)
26
+ get_target_property (XDG_BASEDIR_INCLUDES xdg-basedir INTERFACE_INCLUDE_DIRECTORIES )
27
+ if (XDG_BASEDIR_INCLUDES)
28
+ target_include_directories (libappimage PRIVATE ${XDG_BASEDIR_INCLUDES} )
29
+ endif ()
30
+ endif ()
20
31
21
32
configure_file (config.h.in ${PROJECT_BINARY_DIR} /generated -headers/appimage/config.h)
22
33
23
- foreach (target libappimage libappimage_static)
24
- configure_libappimage_module(${target} )
25
- target_link_libraries (
26
- ${target}
27
- PRIVATE libarchive
28
- PRIVATE xdg-basedir
29
- PRIVATE XdgUtils::DesktopEntry
30
- PRIVATE XdgUtils::BaseDir
31
- PRIVATE libappimage_hashlib
32
- # not linking publicly to squashfuse as headers are not needed when using libappimage
33
- # unit tests etc., which use squashfuse directly, must link to it explicitly
34
- PRIVATE libsquashfuse
35
- PRIVATE Boost::boost
36
- PUBLIC libappimage_shared
37
- PUBLIC pthread
38
- PRIVATE libgio
39
- PUBLIC libcairo
40
- PUBLIC librsvg
41
- PUBLIC dl
42
- )
43
- message (STATUS "IMAGE_MANIPULATION_BACKEND_LIBS ${IMAGE_MANIPULATION_BACKEND_LIBS} " )
44
- if (LIBAPPIMAGE_STANDALONE)
45
- target_link_libraries (${target} PRIVATE -static -libgcc -static -libstdc++)
46
- endif ()
34
+ configure_libappimage_module(libappimage)
47
35
48
- target_include_directories (
49
- ${target}
50
- PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} >
51
- PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR} /generated -headers>
52
- )
36
+ target_link_libraries (
37
+ libappimage
38
+ PRIVATE libarchive
39
+ PRIVATE XdgUtils::DesktopEntry
40
+ PRIVATE XdgUtils::BaseDir
41
+ PRIVATE libappimage_hashlib
42
+ # not linking publicly to squashfuse as headers are not needed when using libappimage
43
+ # unit tests etc., which use squashfuse directly, must link to it explicitly
44
+ PRIVATE libsquashfuse
45
+ PRIVATE Boost::boost
46
+ PUBLIC libappimage_shared
47
+ PUBLIC pthread
48
+ PRIVATE libgio
49
+ PUBLIC libcairo
50
+ PUBLIC librsvg
51
+ PUBLIC dl
52
+ )
53
+ message (STATUS "IMAGE_MANIPULATION_BACKEND_LIBS ${IMAGE_MANIPULATION_BACKEND_LIBS} " )
54
+ if (LIBAPPIMAGE_STANDALONE)
55
+ target_link_libraries (libappimage PRIVATE -static -libgcc -static -libstdc++)
56
+ endif ()
53
57
54
- set_property (TARGET libappimage PROPERTY PUBLIC_HEADER ${libappimage_public_header} )
58
+ target_include_directories (
59
+ libappimage
60
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} >
61
+ PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR} /generated -headers>
62
+ )
55
63
56
- set_property (TARGET libappimage PROPERTY VERSION ${libappimage_VERSION} )
57
- set_property (TARGET libappimage PROPERTY SOVERSION ${libappimage_SOVERSION} )
58
- endforeach ()
64
+ set_property (TARGET libappimage PROPERTY PUBLIC_HEADER ${libappimage_public_header} )
59
65
66
+ set_property (TARGET libappimage PROPERTY VERSION ${libappimage_VERSION} )
67
+ set_property (TARGET libappimage PROPERTY SOVERSION ${libappimage_SOVERSION} )
60
68
61
69
# install libappimage
62
70
install (
0 commit comments