Warning, /graphics/digikam/core/app/DigikamGuiTarget.cmake is written in an unsupported language. File is not indexed.

0001 #
0002 # SPDX-FileCopyrightText: 2010-2024 by Gilles Caulier, <caulier dot gilles at gmail dot com>
0003 # SPDX-FileCopyrightText: 2015      by Veaceslav Munteanu, <veaceslav dot munteanu90 at gmail dot com>
0004 #
0005 # SPDX-License-Identifier: BSD-3-Clause
0006 #
0007 # digiKam GUI object library
0008 
0009 if(ENABLE_DBUS)
0010     qt_add_dbus_adaptor(digikamadaptor_SRCS
0011                          ${CMAKE_CURRENT_SOURCE_DIR}/main/org.kde.digikam.xml
0012                          ${CMAKE_CURRENT_SOURCE_DIR}/main/digikamapp.h
0013                          Digikam::DigikamApp)
0014 endif()
0015 
0016 set(libdigikamgui_SRCS
0017 
0018     ${CMAKE_CURRENT_SOURCE_DIR}/main/digikamapp.cpp
0019     ${CMAKE_CURRENT_SOURCE_DIR}/main/digikamapp_solid.cpp
0020     ${CMAKE_CURRENT_SOURCE_DIR}/main/digikamapp_camera.cpp
0021     ${CMAKE_CURRENT_SOURCE_DIR}/main/digikamapp_import.cpp
0022     ${CMAKE_CURRENT_SOURCE_DIR}/main/digikamapp_config.cpp
0023     ${CMAKE_CURRENT_SOURCE_DIR}/main/digikamapp_tools.cpp
0024     ${CMAKE_CURRENT_SOURCE_DIR}/main/digikamapp_setup.cpp
0025 
0026     ${CMAKE_CURRENT_SOURCE_DIR}/date/dpopupframe.cpp
0027     ${CMAKE_CURRENT_SOURCE_DIR}/date/ddateedit.cpp
0028     ${CMAKE_CURRENT_SOURCE_DIR}/date/ddatetable.cpp
0029     ${CMAKE_CURRENT_SOURCE_DIR}/date/ddatetable_p.cpp
0030     ${CMAKE_CURRENT_SOURCE_DIR}/date/ddatepicker.cpp
0031     ${CMAKE_CURRENT_SOURCE_DIR}/date/ddatepicker_p.cpp
0032     ${CMAKE_CURRENT_SOURCE_DIR}/date/ddatetimeedit.cpp
0033     ${CMAKE_CURRENT_SOURCE_DIR}/date/ddatepickerpopup.cpp
0034     ${CMAKE_CURRENT_SOURCE_DIR}/date/datefolderview.cpp
0035     ${CMAKE_CURRENT_SOURCE_DIR}/date/monthwidget.cpp
0036     ${CMAKE_CURRENT_SOURCE_DIR}/date/timelinewidget.cpp
0037 
0038     ${CMAKE_CURRENT_SOURCE_DIR}/dragdrop/importdragdrop.cpp
0039     ${CMAKE_CURRENT_SOURCE_DIR}/dragdrop/albumdragdrop.cpp
0040     ${CMAKE_CURRENT_SOURCE_DIR}/dragdrop/ddragobjects.cpp
0041     ${CMAKE_CURRENT_SOURCE_DIR}/dragdrop/itemdragdrop.cpp
0042     ${CMAKE_CURRENT_SOURCE_DIR}/dragdrop/tagdragdrop.cpp
0043 
0044     ${CMAKE_CURRENT_SOURCE_DIR}/filters/filtersidebarwidget.cpp
0045     ${CMAKE_CURRENT_SOURCE_DIR}/filters/tagfilterview.cpp
0046 
0047     ${CMAKE_CURRENT_SOURCE_DIR}/items/delegate/digikamitemdelegate.cpp
0048     ${CMAKE_CURRENT_SOURCE_DIR}/items/delegate/itemdelegate.cpp
0049     ${CMAKE_CURRENT_SOURCE_DIR}/items/delegate/itemfacedelegate.cpp
0050     ${CMAKE_CURRENT_SOURCE_DIR}/items/views/digikamitemview.cpp
0051     ${CMAKE_CURRENT_SOURCE_DIR}/items/views/digikamitemview_p.cpp
0052     ${CMAKE_CURRENT_SOURCE_DIR}/items/views/itemcategorizedview.cpp
0053     ${CMAKE_CURRENT_SOURCE_DIR}/items/thumbbar/itemthumbnailbar.cpp
0054     ${CMAKE_CURRENT_SOURCE_DIR}/items/thumbbar/itemthumbnaildelegate.cpp
0055     ${CMAKE_CURRENT_SOURCE_DIR}/items/overlays/assignnameoverlay.cpp
0056     ${CMAKE_CURRENT_SOURCE_DIR}/items/overlays/facerejectionoverlay.cpp
0057     ${CMAKE_CURRENT_SOURCE_DIR}/items/overlays/groupindicatoroverlay.cpp
0058     ${CMAKE_CURRENT_SOURCE_DIR}/items/overlays/itemfullscreenoverlay.cpp
0059     ${CMAKE_CURRENT_SOURCE_DIR}/items/overlays/itemratingoverlay.cpp
0060     ${CMAKE_CURRENT_SOURCE_DIR}/items/overlays/itemrotationoverlay.cpp
0061     ${CMAKE_CURRENT_SOURCE_DIR}/items/overlays/itemcoordinatesoverlay.cpp
0062     ${CMAKE_CURRENT_SOURCE_DIR}/items/overlays/itemselectionoverlay.cpp
0063     ${CMAKE_CURRENT_SOURCE_DIR}/items/utils/itemviewutilities.cpp
0064     ${CMAKE_CURRENT_SOURCE_DIR}/items/utils/tooltipfiller.cpp
0065     ${CMAKE_CURRENT_SOURCE_DIR}/items/utils/contextmenuhelper.cpp
0066     ${CMAKE_CURRENT_SOURCE_DIR}/items/utils/contextmenuhelper_services.cpp
0067     ${CMAKE_CURRENT_SOURCE_DIR}/items/utils/contextmenuhelper_tags.cpp
0068     ${CMAKE_CURRENT_SOURCE_DIR}/items/utils/contextmenuhelper_albums.cpp
0069     ${CMAKE_CURRENT_SOURCE_DIR}/items/utils/contextmenuhelper_groups.cpp
0070     ${CMAKE_CURRENT_SOURCE_DIR}/items/utils/contextmenuhelper_tools.cpp
0071     ${CMAKE_CURRENT_SOURCE_DIR}/items/utils/contextmenuhelper_actions.cpp
0072     ${CMAKE_CURRENT_SOURCE_DIR}/items/utils/groupingviewimplementation.cpp
0073     ${CMAKE_CURRENT_SOURCE_DIR}/items/utils/itemcategorydrawer.cpp
0074 
0075     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview.cpp
0076     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_model.cpp
0077     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_shared.cpp
0078     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_treeview.cpp
0079     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_treeview_delegate.cpp
0080     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_column_configuration_dialog.cpp
0081     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_column_audiovideo.cpp
0082     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_column_file.cpp
0083     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_column_geo.cpp
0084     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_column_digikam.cpp
0085     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_column_item.cpp
0086     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_column_photo.cpp
0087     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_column_thumbnail.cpp
0088     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_columnfactory.cpp
0089     ${CMAKE_CURRENT_SOURCE_DIR}/views/tableview/tableview_selection_model_syncer.cpp
0090 
0091     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/itemiconview.cpp
0092     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/itemiconview_albums.cpp
0093     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/itemiconview_groups.cpp
0094     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/itemiconview_items.cpp
0095     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/itemiconview_search.cpp
0096     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/itemiconview_sidebars.cpp
0097     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/itemiconview_tags.cpp
0098     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/itemiconview_tools.cpp
0099     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/itemiconview_views.cpp
0100     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/itemiconview_zoom.cpp
0101     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/itemiconview_iqs.cpp
0102     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/welcomepageview.cpp
0103     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/trashview.cpp
0104     ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/stackedview.cpp
0105     ${CMAKE_CURRENT_SOURCE_DIR}/views/preview/itempreviewcanvas.cpp
0106     ${CMAKE_CURRENT_SOURCE_DIR}/views/preview/itempreviewview.cpp
0107 
0108     ${CMAKE_CURRENT_SOURCE_DIR}/views/sidebar/albumfolderviewsidebarwidget.cpp
0109     ${CMAKE_CURRENT_SOURCE_DIR}/views/sidebar/datefolderviewsidebarwidget.cpp
0110     ${CMAKE_CURRENT_SOURCE_DIR}/views/sidebar/timelinesidebarwidget.cpp
0111     ${CMAKE_CURRENT_SOURCE_DIR}/views/sidebar/searchsidebarwidget.cpp
0112     ${CMAKE_CURRENT_SOURCE_DIR}/views/sidebar/fuzzysearchsidebarwidget.cpp
0113     ${CMAKE_CURRENT_SOURCE_DIR}/views/sidebar/labelssidebarwidget.cpp
0114     ${CMAKE_CURRENT_SOURCE_DIR}/views/sidebar/peoplesidebarwidget.cpp
0115     ${CMAKE_CURRENT_SOURCE_DIR}/views/sidebar/tagviewsidebarwidget.cpp
0116     ${CMAKE_CURRENT_SOURCE_DIR}/views/sidebar/sidebarwidget.cpp
0117 
0118     ${CMAKE_CURRENT_SOURCE_DIR}/views/utils/dmodelfactory.cpp
0119     ${CMAKE_CURRENT_SOURCE_DIR}/views/utils/componentsinfodlg.cpp
0120 
0121     ${digikamadaptor_SRCS}
0122 )
0123 
0124 if(${ENABLE_GEOLOCATION})
0125     set(libdigikamgui_SRCS
0126         ${libdigikamgui_SRCS}
0127         ${CMAKE_CURRENT_SOURCE_DIR}/views/stack/mapwidgetview.cpp
0128         ${CMAKE_CURRENT_SOURCE_DIR}/views/sidebar/gpssearchsidebarwidget.cpp
0129        )
0130 endif()
0131 
0132 # FIXME
0133 #
0134 #if(ENABLE_DIGIKAM_MODELTEST)
0135 #    message(STATUS "Modeltest enabled")
0136 #
0137 #    set(libdigikamgui_SRCS ${libdigikamgui_SRCS}
0138 #        modeltest/modeltest.cpp)
0139 #
0140 #    add_definitions(-DENABLE_DIGIKAM_MODELTEST)
0141 #endif()
0142 
0143 add_library(gui_digikam_obj
0144             OBJECT
0145             ${libdigikamgui_SRCS}
0146 )
0147 
0148 target_compile_definitions(gui_digikam_obj
0149                            PRIVATE
0150                            digikamgui_EXPORTS
0151 )
0152 
0153 target_include_directories(gui_digikam_obj
0154                            PRIVATE
0155                            ${DIGIKAM_TARGET_INCLUDES}
0156 )
0157 
0158 ### digiKam GUI shared library objects declaration ##############################################################################
0159 
0160 set(DIGIKAMGUI_OBJECTS
0161 
0162             $<TARGET_OBJECTS:gui_digikam_obj>
0163 
0164             # Libs
0165             $<TARGET_OBJECTS:gui_digikamdatabasemain_obj>
0166             $<TARGET_OBJECTS:gui_digikamfacesenginedatabase_obj>
0167             $<TARGET_OBJECTS:gui_digikamdeletedialog_obj>
0168             $<TARGET_OBJECTS:gui_digikamtemplate_obj>
0169             $<TARGET_OBJECTS:gui_itempropertiesdigikam_obj>
0170             $<TARGET_OBJECTS:gui_digikammodels_obj>
0171             $<TARGET_OBJECTS:gui_digikamalbum_obj>
0172             $<TARGET_OBJECTS:gui_fileactionmanager_obj>
0173             $<TARGET_OBJECTS:gui_digikamtags_obj>
0174             $<TARGET_OBJECTS:gui_digikamsettings_obj>
0175             $<TARGET_OBJECTS:gui_filters_obj>
0176             $<TARGET_OBJECTS:gui_imagehistorywidgets_obj>
0177             $<TARGET_OBJECTS:gui_iojobs_obj>
0178             $<TARGET_OBJECTS:gui_dtrash_obj>
0179             $<TARGET_OBJECTS:gui_digikamautotagassignment_obj>
0180 
0181             # Utilities
0182             $<TARGET_OBJECTS:gui_setup_obj>
0183             $<TARGET_OBJECTS:gui_lighttable_obj>
0184             $<TARGET_OBJECTS:gui_maintenance_obj>
0185             $<TARGET_OBJECTS:gui_searchwindow_obj>
0186             $<TARGET_OBJECTS:gui_firstrun_obj>
0187             $<TARGET_OBJECTS:gui_fuzzysearch_obj>
0188             $<TARGET_OBJECTS:gui_imageeditorgui_obj>
0189             $<TARGET_OBJECTS:gui_importui_obj>
0190             $<TARGET_OBJECTS:gui_importuibackend_obj>
0191             $<TARGET_OBJECTS:gui_facemanagement_obj>
0192             $<TARGET_OBJECTS:gui_queuemanager_obj>
0193             $<TARGET_OBJECTS:gui_advancedrename_obj>
0194             $<TARGET_OBJECTS:gui_focuspointmanagement_obj>
0195 )
0196 
0197 if(${ENABLE_GEOLOCATION})
0198 
0199     set(DIGIKAMGUI_OBJECTS
0200         ${DIGIKAMGUI_OBJECTS}
0201         $<TARGET_OBJECTS:gui_gpssearch_obj>
0202     )
0203 
0204 endif()
0205 
0206 ### digiKam GUI shared library target ###########################################################################################
0207 
0208 add_library(digikamgui
0209             SHARED
0210             ${DIGIKAMGUI_OBJECTS}
0211 )
0212 
0213 set_target_properties(digikamgui PROPERTIES
0214                       VERSION ${DIGIKAM_VERSION_SHORT}
0215                       SOVERSION ${DIGIKAM_VERSION_SHORT}
0216 )
0217 
0218 target_compile_definitions(digikamgui
0219                            PRIVATE
0220                            digikamgui_EXPORTS
0221 )
0222 
0223 add_dependencies(digikamgui digikamcore digikamdatabase)
0224 
0225 # All codes from this target are exported with digikam_gui_export.h header and DIGIKAM_GUI_EXPORT macro.
0226 generate_export_header(digikamgui
0227                        BASE_NAME digikam_gui
0228                        EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/utils/digikam_gui_export.h"
0229 )
0230 
0231 if(WIN32)
0232     set_target_properties(digikamgui PROPERTIES COMPILE_FLAGS -DJPEG_STATIC)
0233 endif()
0234 
0235 # NOTE: all this target dependencies must be private and not exported to prevent inherited dependencies on external plugins.
0236 
0237 target_link_libraries(digikamgui
0238 
0239                       PRIVATE
0240 
0241                       Qt${QT_VERSION_MAJOR}::Core
0242                       Qt${QT_VERSION_MAJOR}::Gui
0243                       Qt${QT_VERSION_MAJOR}::Widgets
0244                       Qt${QT_VERSION_MAJOR}::Sql
0245                       Qt${QT_VERSION_MAJOR}::PrintSupport
0246 
0247                       KF${QT_VERSION_MAJOR}::XmlGui
0248                       KF${QT_VERSION_MAJOR}::Solid
0249                       KF${QT_VERSION_MAJOR}::ConfigCore
0250                       KF${QT_VERSION_MAJOR}::ConfigGui
0251                       KF${QT_VERSION_MAJOR}::Service
0252                       KF${QT_VERSION_MAJOR}::WindowSystem
0253                       KF${QT_VERSION_MAJOR}::I18n
0254 
0255                       digikamcore
0256                       digikamdatabase
0257 
0258                       opencv_core
0259                       opencv_objdetect
0260                       opencv_imgproc
0261                       opencv_imgcodecs
0262                       opencv_dnn
0263                       opencv_ml
0264                       opencv_flann
0265 
0266                       ${FFMPEG_LIBRARIES}
0267 )
0268 
0269 if(ENABLE_QWEBENGINE)
0270 
0271     target_link_libraries(digikamgui
0272                           PRIVATE
0273                           Qt${QT_VERSION_MAJOR}::WebEngineWidgets
0274     )
0275 
0276 else()
0277 
0278     target_link_libraries(digikamgui
0279                           PRIVATE
0280                           Qt${QT_VERSION_MAJOR}::WebKitWidgets
0281     )
0282 
0283 endif()
0284 
0285 if(ENABLE_DBUS)
0286 
0287     target_link_libraries(digikamgui
0288                           PRIVATE
0289                           Qt${QT_VERSION_MAJOR}::DBus
0290     )
0291 
0292 endif()
0293 
0294 if(KF${QT_VERSION_MAJOR}IconThemes_FOUND)
0295 
0296     target_link_libraries(digikamgui
0297                           PRIVATE
0298                           KF${QT_VERSION_MAJOR}::IconThemes
0299     )
0300 
0301     if(Qt6_FOUND)
0302 
0303         target_link_libraries(digikamgui
0304                               PRIVATE
0305                               KF${QT_VERSION_MAJOR}::IconWidgets
0306         )
0307 
0308     endif()
0309 
0310 endif()
0311 
0312 if(KF${QT_VERSION_MAJOR}KIO_FOUND)
0313 
0314     target_link_libraries(digikamgui
0315                           PRIVATE
0316                           KF${QT_VERSION_MAJOR}::KIOWidgets
0317     )
0318 
0319 endif()
0320 
0321 if(APPLE)
0322 
0323     target_link_libraries(digikamgui
0324                           PRIVATE
0325                           /System/Library/Frameworks/AppKit.framework
0326     )
0327 
0328 endif()
0329 
0330 
0331 if(NOT WIN32)
0332 
0333     # To link under Solaris (see bug #274484)
0334     target_link_libraries(digikamgui
0335                           PRIVATE
0336                           ${MATH_LIBRARY}
0337     )
0338 
0339 endif()
0340 
0341 if(Gphoto2_FOUND)
0342 
0343     # See bug #258931: libgphoto2 library must be the last arg for linker.
0344     # See bug #268267 : digiKam need to be linked to libusb to prevent crash
0345     # at gphoto2 init if opencv is linked with libdc1394. Libusb linking rules are
0346     # add to gphoto2 linking rules by Gphoto2 cmake detection script.
0347 
0348     target_link_libraries(digikamgui
0349                           PRIVATE
0350                           ${GPHOTO2_LIBRARIES}
0351     )
0352 
0353 endif()
0354 
0355 # Share the install include directory for the 3rdparty plugins
0356 target_include_directories(digikamgui INTERFACE "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/digikam>")
0357 
0358 ### Install Rules ###############################################################################################################
0359 
0360 install(TARGETS digikamgui EXPORT DigikamGuiConfig ${INSTALL_TARGETS_DEFAULT_ARGS})
0361 install(EXPORT DigikamGuiConfig  DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/DigikamGui" NAMESPACE Digikam::)
0362 
0363 write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/DigikamGuiConfigVersion.cmake
0364                                  VERSION ${DIGIKAM_VERSION_SHORT}
0365                                  COMPATIBILITY SameMajorVersion)
0366 
0367 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/DigikamGuiConfigVersion.cmake
0368         DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/DigikamGui")
0369 
0370 # Install debug symbols
0371 
0372 if(MSVC)
0373     install(FILES "$<TARGET_PDB_FILE:digikamgui>" DESTINATION "${CMAKE_INSTALL_BINDIR}" CONFIGURATIONS Debug RelWithDebInfo)
0374 endif()
0375 
0376 if(APPLE)
0377     install(FILES "$<TARGET_FILE:digikamgui>.dSYM" DESTINATION "${CMAKE_INSTALL_LIBDIR}" CONFIGURATIONS Debug RelWithDebInfo)
0378 endif()