mirror of
https://github.com/YACReader/yacreader
synced 2026-03-01 18:33:09 -05:00
Migrate the build system to cmake
This commit is contained in:
304
YACReaderLibrary/CMakeLists.txt
Normal file
304
YACReaderLibrary/CMakeLists.txt
Normal file
@ -0,0 +1,304 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user