add_library(qtmaildir_lib STATIC keymap.cpp config.cpp mimeparser.cpp requestinterceptor.cpp htmlbuilder.cpp cidschemehandler.cpp cardlayout.cpp marks.cpp carddelegate.cpp notmuchworker.cpp tagchip.cpp tagcolors.cpp savequerydialog.cpp tagdialog.cpp tagrules.cpp tagrulesdialog.cpp tagstrip.cpp threadlistmodel.cpp threadlistview.cpp mailsync.cpp syncmonitor.cpp threadcidmap.cpp messageview.cpp messagedetailsdialog.cpp mainwindow.cpp querycompleter.cpp rulequery.cpp searchterm.cpp ) target_include_directories(qtmaildir_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${NOTMUCH_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/generated/qtmaildir) target_link_libraries(qtmaildir_lib PUBLIC Qt6::Widgets Qt6::Svg Qt6::WebEngineWidgets PkgConfig::GMIME ${NOTMUCH_LIBRARY}) # resources.qrc belongs to the executable, not to the static library. A qrc # compiled into a .a registers itself from a global initialiser, and the linker # drops that object because nothing references it, so the resource silently # fails to exist at runtime. add_executable(qtmaildir main.cpp resources.qrc) target_link_libraries(qtmaildir PRIVATE qtmaildir_lib) install(TARGETS qtmaildir RUNTIME DESTINATION bin) # The .ts is tracked; the .qm is generated and is not. Built beside the binary # so a build tree runs translated without installing, and installed to the # AppDataLocation main.cpp searches. Building the .qm without installing it # reproduces exactly the state item 22 exists to fix, so the install rule is # part of this and not a follow-up. if(Qt6LinguistTools_FOUND) set(QTMAILDIR_TS ${CMAKE_SOURCE_DIR}/translations/qtmaildir_it_IT.ts) set(QTMAILDIR_QM ${CMAKE_CURRENT_BINARY_DIR}/translations/qtmaildir_it_IT.qm) add_custom_command( OUTPUT ${QTMAILDIR_QM} COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/translations COMMAND Qt6::lrelease ${QTMAILDIR_TS} -qm ${QTMAILDIR_QM} DEPENDS ${QTMAILDIR_TS} COMMENT "Compiling Italian translation" VERBATIM) add_custom_target(qtmaildir_translations ALL DEPENDS ${QTMAILDIR_QM}) add_dependencies(qtmaildir qtmaildir_translations) install(FILES ${QTMAILDIR_QM} DESTINATION share/qtmaildir/translations) else() message(STATUS "Qt6 LinguistTools not found; building without translations") endif() # The icon goes into the hicolor theme under its scalable directory, which is # where a desktop environment looks for the Icon= name in the .desktop entry. install(FILES ${CMAKE_SOURCE_DIR}/assets/icons/qtmaildir.svg DESTINATION share/icons/hicolor/scalable/apps) install(FILES ${CMAKE_SOURCE_DIR}/assets/qtmaildir.desktop DESTINATION share/applications)