Files
yacreader/YACReaderLibrary/CMakeLists.txt
Luis Ángel San Martín Rodríguez 865020fe11 Migrate the build system to cmake
2026-02-25 09:19:39 +01:00

305 lines
8.4 KiB
CMake

# YACReaderLibrary - Comic Library Manager
# --- library_common (shared with YACReaderLibraryServer) ---
add_library(library_common STATIC
library_creator.h
library_creator.cpp
package_manager.h
package_manager.cpp
bundle_creator.h
bundle_creator.cpp
initial_comic_info_extractor.h
initial_comic_info_extractor.cpp
xml_info_parser.h
xml_info_parser.cpp
xml_info_library_scanner.h
xml_info_library_scanner.cpp
yacreader_local_server.h
yacreader_local_server.cpp
comics_remover.h
comics_remover.cpp
yacreader_libraries.h
yacreader_libraries.cpp
comic_files_manager.h
comic_files_manager.cpp
ip_config_helper.h
ip_config_helper.cpp
libraries_update_coordinator.h
libraries_update_coordinator.cpp
)
target_include_directories(library_common PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/db
)
target_link_libraries(library_common PUBLIC
Qt::Core
Qt::Core5Compat
Qt::Network
Qt::Sql
common_all
comic_backend
cbx_backend
db_helper
QsLog
)
# --- db_helper (database layer, shared with YACReaderLibraryServer) ---
add_library(db_helper STATIC
db_helper.h
db_helper.cpp
db/data_base_management.h
db/data_base_management.cpp
db/reading_list.h
db/reading_list.cpp
db/query_lexer.h
db/query_lexer.cpp
db/query_parser.h
db/query_parser.cpp
db/search_query.h
db/search_query.cpp
)
target_include_directories(db_helper PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/db
)
target_link_libraries(db_helper PUBLIC
Qt::Core
Qt::Sql
common_all
QsLog
)
# When BUILD_SERVER_STANDALONE=ON, only library_common and db_helper are built.
# The full YACReaderLibrary GUI app requires Qt::Widgets and other full-build components.
if(NOT BUILD_SERVER_STANDALONE)
# --- YACReaderLibrary executable ---
qt_add_executable(YACReaderLibrary WIN32
main.cpp
library_window.h
library_window.cpp
library_window_actions.h
library_window_actions.cpp
create_library_dialog.h
create_library_dialog.cpp
add_library_dialog.h
add_library_dialog.cpp
rename_library_dialog.h
rename_library_dialog.cpp
properties_dialog.h
properties_dialog.cpp
options_dialog.h
options_dialog.cpp
export_library_dialog.h
export_library_dialog.cpp
import_library_dialog.h
import_library_dialog.cpp
export_comics_info_dialog.h
export_comics_info_dialog.cpp
import_comics_info_dialog.h
import_comics_info_dialog.cpp
server_config_dialog.h
server_config_dialog.cpp
comic_flow_widget.h
comic_flow_widget.cpp
no_libraries_widget.h
no_libraries_widget.cpp
import_widget.h
import_widget.cpp
trayicon_controller.h
trayicon_controller.cpp
yacreader_content_views_manager.h
yacreader_content_views_manager.cpp
yacreader_main_toolbar.h
yacreader_main_toolbar.cpp
comics_view.h
comics_view.cpp
comics_view_transition.h
comics_view_transition.cpp
classic_comics_view.h
classic_comics_view.cpp
grid_comics_view.h
grid_comics_view.cpp
no_search_results_widget.h
no_search_results_widget.cpp
folder_content_view.h
folder_content_view.cpp
recent_visibility_coordinator.h
recent_visibility_coordinator.cpp
library_comic_opener.h
library_comic_opener.cpp
db/comic_query_result_processor.h
db/comic_query_result_processor.cpp
db/folder_query_result_processor.h
db/folder_query_result_processor.cpp
db/folder_item.h
db/folder_item.cpp
db/folder_model.h
db/folder_model.cpp
db/comic_model.h
db/comic_model.cpp
db/comic_item.h
db/comic_item.cpp
db/reading_list_model.h
db/reading_list_model.cpp
db/reading_list_item.h
db/reading_list_item.cpp
yacreader_folders_view.h
yacreader_folders_view.cpp
yacreader_reading_lists_view.h
yacreader_reading_lists_view.cpp
add_label_dialog.h
add_label_dialog.cpp
yacreader_history_controller.h
yacreader_history_controller.cpp
yacreader_navigation_controller.h
yacreader_navigation_controller.cpp
empty_label_widget.h
empty_label_widget.cpp
empty_folder_widget.h
empty_folder_widget.cpp
empty_container_info.h
empty_container_info.cpp
empty_special_list.h
empty_special_list.cpp
empty_reading_list_widget.h
empty_reading_list_widget.cpp
info_comics_view.h
info_comics_view.cpp
yacreader_comics_selection_helper.h
yacreader_comics_selection_helper.cpp
yacreader_comic_info_helper.h
yacreader_comic_info_helper.cpp
current_comic_view_helper.h
current_comic_view_helper.cpp
# App-specific themes + shared theme_manager (depends on app theme.h)
themes/theme.h
themes/theme_factory.h
themes/theme_factory.cpp
${CMAKE_SOURCE_DIR}/common/themes/theme_manager.h
${CMAKE_SOURCE_DIR}/common/themes/theme_manager.cpp
)
# macOS-specific sources
if(APPLE)
target_sources(YACReaderLibrary PRIVATE
trayhandler.h
trayhandler.mm
)
endif()
target_include_directories(YACReaderLibrary PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/db
${CMAKE_CURRENT_SOURCE_DIR}/themes
)
target_compile_definitions(YACReaderLibrary PRIVATE
SERVER_RELEASE
YACREADER_LIBRARY
)
# Resources
qt_add_resources(yacreaderlibrary_images_rcc "${CMAKE_CURRENT_SOURCE_DIR}/images.qrc")
qt_add_resources(yacreaderlibrary_files_rcc "${CMAKE_CURRENT_SOURCE_DIR}/files.qrc")
qt_add_resources(yacreaderlibrary_qml_rcc "${CMAKE_CURRENT_SOURCE_DIR}/qml.qrc")
target_sources(YACReaderLibrary PRIVATE
${yacreaderlibrary_images_rcc}
${yacreaderlibrary_files_rcc}
${yacreaderlibrary_qml_rcc}
)
if(WIN32 OR (UNIX AND NOT APPLE))
qt_add_resources(yacreaderlibrary_images_win_rcc "${CMAKE_CURRENT_SOURCE_DIR}/images_win.qrc")
target_sources(YACReaderLibrary PRIVATE ${yacreaderlibrary_images_win_rcc})
endif()
if(APPLE)
qt_add_resources(yacreaderlibrary_images_osx_rcc "${CMAKE_CURRENT_SOURCE_DIR}/images_osx.qrc")
target_sources(YACReaderLibrary PRIVATE ${yacreaderlibrary_images_osx_rcc})
endif()
# Translations
qt_add_translations(YACReaderLibrary
TS_FILES
yacreaderlibrary_es.ts
yacreaderlibrary_ru.ts
yacreaderlibrary_pt.ts
yacreaderlibrary_fr.ts
yacreaderlibrary_nl.ts
yacreaderlibrary_tr.ts
yacreaderlibrary_de.ts
yacreaderlibrary_zh_CN.ts
yacreaderlibrary_zh_TW.ts
yacreaderlibrary_zh_HK.ts
yacreaderlibrary_it.ts
yacreaderlibrary_en.ts
)
target_link_libraries(YACReaderLibrary PRIVATE
Qt::Core
Qt::Gui
Qt::GuiPrivate
Qt::Network
Qt::Widgets
Qt::Sql
Qt::Svg
Qt::Quick
Qt::Qml
Qt::QuickWidgets
Qt::QuickControls2
Qt::Core5Compat
library_common
db_helper
comic_backend
common_gui
rhi_flow_library
custom_widgets_library
shortcuts_library
server
comic_vine
cbx_backend
concurrent_queue
worker
QsLog
QrCode
KDSignalThrottler
)
# Platform-specific
if(WIN32)
target_sources(YACReaderLibrary PRIVATE icon.rc)
target_link_libraries(YACReaderLibrary PRIVATE oleaut32 ole32 shell32 user32)
endif()
if(APPLE)
target_sources(YACReaderLibrary PRIVATE YACReaderLibrary.icns)
set_source_files_properties(YACReaderLibrary.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
set_target_properties(YACReaderLibrary PROPERTIES
MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist"
MACOSX_BUNDLE_GUI_IDENTIFIER "com.yacreader.YACReaderLibrary"
MACOSX_BUNDLE_BUNDLE_NAME "YACReaderLibrary"
)
target_link_libraries(YACReaderLibrary PRIVATE
"-framework Foundation"
"-framework ApplicationServices"
"-framework AppKit"
)
endif()
# Linux install
if(UNIX AND NOT APPLE)
target_compile_definitions(YACReaderLibrary PRIVATE
"LIBDIR=\"${CMAKE_INSTALL_FULL_LIBDIR}\""
"DATADIR=\"${CMAKE_INSTALL_FULL_DATADIR}\""
"BINDIR=\"${CMAKE_INSTALL_FULL_BINDIR}\"")
install(TARGETS YACReaderLibrary RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
# Server web files (for bundled server mode)
if(NOT BUILD_SERVER_STANDALONE)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/release/server
DESTINATION ${CMAKE_INSTALL_DATADIR}/yacreader)
endif()
endif()
endif() # NOT BUILD_SERVER_STANDALONE (YACReaderLibrary executable)