Skip to content

Commit 3467b20

Browse files
committed
Correctly include and link to libraries
All libraries used within the project (even the imported ones) correctly define include directories etc. in their interfaces, so manually including directories and declaring dependencies is completely unnecessary and clearly makes the code less easy to read and understand. It's completely sufficient to use target_link_libraries(...) as long as PRIVATE and PUBLIC linking are done correctly.
1 parent c440b15 commit 3467b20

File tree

3 files changed

+21
-32
lines changed

3 files changed

+21
-32
lines changed

src/libappimage/core/CMakeLists.txt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,16 @@ add_library(
1010
impl/StreambufType2.cpp
1111
)
1212

13-
target_include_directories(
14-
core
15-
PRIVATE $<TARGET_PROPERTY:libappimage_hashlib,INTERFACE_INCLUDE_DIRECTORIES>
16-
PRIVATE $<TARGET_PROPERTY:XdgUtils::DesktopEntry,INTERFACE_INCLUDE_DIRECTORIES>
17-
PRIVATE $<TARGET_PROPERTY:libarchive,INTERFACE_INCLUDE_DIRECTORIES>
18-
PRIVATE $<TARGET_PROPERTY:libsquashfuse,INTERFACE_INCLUDE_DIRECTORIES>
13+
target_include_directories(core
1914
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..
2015
)
2116

17+
target_link_libraries(core
18+
PRIVATE Boost::boost
19+
PRIVATE libappimage_hashlib
20+
PRIVATE XdgUtils::DesktopEntry
21+
PRIVATE libarchive
22+
PRIVATE libsquashfuse
23+
)
24+
2225
configure_libappimage_module(core)
23-
add_dependencies(core Boost::boost libappimage_hashlib XdgUtils::DesktopEntry libarchive libsquashfuse)

src/libappimage/desktop_integration/CMakeLists.txt

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,18 @@ add_library(appimage_desktop_integration OBJECT ${appimage_desktop_integration_s
1515
# Include interface directories from the libs used. Ideally we will use target_link_libraries
1616
# but it's not supported in cmake 3.8.
1717
# https://cmake.org/cmake/help/latest/command/target_link_libraries.html#linking-object-libraries
18-
target_include_directories(
19-
appimage_desktop_integration
20-
PUBLIC $<TARGET_PROPERTY:libappimage_hashlib,INTERFACE_INCLUDE_DIRECTORIES>
21-
PRIVATE $<TARGET_PROPERTY:libarchive,INTERFACE_INCLUDE_DIRECTORIES>
22-
PRIVATE $<TARGET_PROPERTY:libsquashfuse,INTERFACE_INCLUDE_DIRECTORIES>
23-
PRIVATE $<TARGET_PROPERTY:libglib,INTERFACE_INCLUDE_DIRECTORIES>
24-
PRIVATE $<TARGET_PROPERTY:XdgUtils::DesktopEntry,INTERFACE_INCLUDE_DIRECTORIES>
25-
PRIVATE $<TARGET_PROPERTY:XdgUtils::BaseDir,INTERFACE_INCLUDE_DIRECTORIES>
18+
target_include_directories(appimage_desktop_integration
2619
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
2720
PRIVATE $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/generated-headers>
2821
)
2922
target_link_libraries(appimage_desktop_integration
23+
PRIVATE libappimage_hashlib
3024
PRIVATE Boost::boost
25+
PRIVATE libarchive
26+
PRIVATE libsquashfuse
27+
PRIVATE libglib
28+
PRIVATE XdgUtils::DesktopEntry
29+
PRIVATE XdgUtils::BaseDir
3130
)
3231

3332
configure_libappimage_module(appimage_desktop_integration)
34-
add_dependencies(appimage_desktop_integration
35-
libappimage_hashlib
36-
libarchive
37-
libsquashfuse
38-
Boost::boost
39-
XdgUtils::DesktopEntry
40-
XdgUtils::BaseDir
41-
)

src/libappimage/utils/CMakeLists.txt

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,13 @@ add_library(appimage_utils OBJECT ${APPIMAGE_UTILS_SRCS})
1818

1919
# Generic module configuration
2020
configure_libappimage_module(appimage_utils)
21-
target_include_directories(
22-
appimage_utils
23-
PRIVATE $<TARGET_PROPERTY:XdgUtils::DesktopEntry,INTERFACE_INCLUDE_DIRECTORIES>
24-
PRIVATE $<TARGET_PROPERTY:XdgUtils::BaseDir,INTERFACE_INCLUDE_DIRECTORIES>
25-
PUBLIC $<TARGET_PROPERTY:libappimage_hashlib,INTERFACE_INCLUDE_DIRECTORIES>
26-
PUBLIC $<TARGET_PROPERTY:libcairo,INTERFACE_INCLUDE_DIRECTORIES>
27-
PUBLIC $<TARGET_PROPERTY:librsvg,INTERFACE_INCLUDE_DIRECTORIES>
28-
)
2921
target_include_directories(appimage_utils PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
3022
target_link_libraries(appimage_utils
3123
PRIVATE Boost::boost
24+
PRIVATE libappimage_hashlib
25+
PRIVATE XdgUtils::DesktopEntry
26+
PRIVATE XdgUtils::BaseDir
27+
PUBLIC libcairo
28+
PUBLIC librsvg
3229
)
33-
add_dependencies(appimage_utils libappimage_hashlib XdgUtils::DesktopEntry XdgUtils::BaseDir)
3430
target_compile_definitions(appimage_utils PUBLIC ${IMAGE_MANIPULATION_BACKEND_COMPILE_DEFINITIONS})

0 commit comments

Comments
 (0)