cmake_minimum_required(VERSION 3.21) project(SagoImageBrowser VERSION 0.1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_AUTOMOC ON) include(GNUInstallDirs) find_package(Qt6 REQUIRED COMPONENTS Widgets LinguistTools) # exiv2's exported target lists Iconv::Iconv in its link interface (notably on # the MXE/MinGW Windows build), so the imported target must exist before the # exiv2 config below is consumed — even though we never call iconv directly. find_package(Iconv REQUIRED) # Use the system-provided exiv2 (both 0.27 and 0.28 are supported) find_package(exiv2 REQUIRED CONFIG) # 0.28 exports Exiv2::exiv2lib; 0.27 configs may export the unnamespaced target if(TARGET Exiv2::exiv2lib) set(EXIV2_TARGET Exiv2::exiv2lib) else() set(EXIV2_TARGET exiv2lib) endif() qt_add_executable(SagoImageBrowser src/main.cpp src/mainwindow.cpp src/mainwindow.h src/imagemodel.cpp src/imagemodel.h src/fsdirmodel.cpp src/fsdirmodel.h src/thumbnailworker.cpp src/thumbnailworker.h src/thumbnailcache.cpp src/thumbnailcache.h src/imageviewwidget.cpp src/imageviewwidget.h src/preferencesdialog.cpp src/preferencesdialog.h src/shortcutmanager.cpp src/shortcutmanager.h src/exifreader.cpp src/exifreader.h src/nativepath.cpp src/nativepath.h src/pathcompletermodel.cpp src/pathcompletermodel.h src/thumbnaildelegate.cpp src/thumbnaildelegate.h) if(WIN32) enable_language(RC) # windres resolves relative paths in .rc files against its own CWD, not # the .rc file's location, so the icon path must be baked in as absolute. set(SAGO_ICON_PATH "${CMAKE_CURRENT_SOURCE_DIR}/extra/windows/sago_image_browser.ico") configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/extra/windows/sagoimagebrowser.rc.in ${CMAKE_CURRENT_BINARY_DIR}/sagoimagebrowser.rc @ONLY) target_sources(SagoImageBrowser PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/sagoimagebrowser.rc) endif() set_source_files_properties(extra/icons/sago_image_browser.svg PROPERTIES QT_RESOURCE_ALIAS sago_image_browser.svg) qt_add_resources(SagoImageBrowser "icons" PREFIX "/icons" FILES extra/icons/sago_image_browser.svg) target_link_libraries(SagoImageBrowser PRIVATE Qt6::Widgets ${EXIV2_TARGET}) add_executable(test_exifreader test/test_exifreader.cpp src/exifreader.cpp src/nativepath.cpp) target_include_directories(test_exifreader PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) target_link_libraries(test_exifreader PRIVATE Qt6::Widgets ${EXIV2_TARGET}) qt_add_translations(SagoImageBrowser TS_FILES translations/da.ts RESOURCE_PREFIX "/translations") install(TARGETS SagoImageBrowser RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) install(FILES extra/sago-image-browser.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications) install(FILES extra/icons/sago_image_browser.svg DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps)