Mercurial > minori
view CMakeLists.txt @ 175:9b10175be389
dep/json: update to v3.11.3
anime/db: save anime list to database, very much untested and likely won't work as intended
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Thu, 30 Nov 2023 13:52:26 -0500 |
parents | 6fdf0632c003 |
children | 9c4645100fec 8f6f8dd2eb23 |
line wrap: on
line source
cmake_minimum_required(VERSION 3.18) project(minori LANGUAGES CXX VERSION 0.1.0) if(APPLE) enable_language(OBJCXX) endif() set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") option(BUILD_SHARED_LIBS "Build using shared libraries" ON) option(USE_QT6 "Force build with Qt 6" OFF) option(USE_QT5 "Force build with Qt 5" OFF) option(UPDATE_TRANSLATIONS "Update *.ts translation files" OFF) add_subdirectory(dep/anitomy) add_subdirectory(dep/animia) add_subdirectory(dep/pugixml) # Fix for mingw64 list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a") if(USE_QT6) set(QT_VERSION_MAJOR 6) elseif(USE_QT5) set(QT_VERSION_MAJOR 5) else() find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) endif() find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools) find_package(CURL REQUIRED) set(LIBRARIES ${CURL_LIBRARIES} ${Qt${QT_VERSION_MAJOR}Widgets_LIBRARIES} anitomy animia pugixml ) # We need Cocoa for some OS X stuff if(APPLE) find_library(COCOA_LIBRARY Cocoa) list(APPEND LIBRARIES ${COCOA_LIBRARY}) endif() set(SRC_FILES # Main entrypoint src/main.cc # Core files and datatype declarations... src/core/anime.cc src/core/anime_db.cc src/core/config.cc src/core/date.cc src/core/filesystem.cc src/core/http.cc src/core/json.cc src/core/strings.cc src/core/time.cc # Main window src/gui/window.cc src/gui/theme.cc src/gui/locale.cc # Main window pages src/gui/pages/anime_list.cc src/gui/pages/now_playing.cc src/gui/pages/statistics.cc src/gui/pages/search.cc src/gui/pages/seasons.cc src/gui/pages/torrents.cc src/gui/pages/history.cc # Custom widgets src/gui/widgets/anime_info.cc src/gui/widgets/poster.cc src/gui/widgets/clickable_label.cc src/gui/widgets/sidebar.cc src/gui/widgets/text.cc src/gui/widgets/optional_date.cc # Dialogs src/gui/dialog/about.cc src/gui/dialog/information.cc src/gui/dialog/settings.cc src/gui/dialog/settings/application.cc src/gui/dialog/settings/services.cc src/gui/dialog/settings/torrents.cc src/gui/dialog/settings/recognition.cc # Translate src/gui/translate/anime.cc src/gui/translate/anilist.cc src/gui/translate/config.cc # Services (only AniList for now) src/services/services.cc src/services/anilist.cc # Tracking src/track/constants.cc src/track/media.cc # Qt resources rc/icons.qrc rc/dark.qrc rc/player_data.qrc ) set(INCLUDE include dep/pugixml/src dep/animia/include dep/anitomy dep ) set(TS_FILES rc/locale/en_GB.ts rc/locale/es.ts ) set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/rc/locale") # dumb little hack to get this working on Qt5 and Qt6 if(UPDATE_TRANSLATIONS) cmake_language(CALL qt${QT_VERSION_MAJOR}_create_translation ${SRC_FILES} ${TS_FILES} OPTIONS "-I${CMAKE_CURRENT_SOURCE_DIR}/include") endif() cmake_language(CALL qt${QT_VERSION_MAJOR}_add_translation QM_FILES ${TS_FILES}) list(APPEND SRC_FILES ${QM_FILES}) function(qt_create_resource_file outfile) set(QRC "<!DOCTYPE rcc><RCC version=\"1.0\">\n\t<qresource>\n") get_filename_component(DIR ${outfile} DIRECTORY) foreach (qm ${ARGN}) file(RELATIVE_PATH name ${DIR} ${qm}) string(APPEND QRC "\t\t<file>${name}</file>\n") endforeach() string(APPEND QRC "\t</qresource>\n</RCC>\n") file(WRITE ${outfile} ${QRC}) endfunction() qt_create_resource_file("${CMAKE_CURRENT_BINARY_DIR}/rc/locale.qrc" ${QM_FILES}) list(APPEND SRC_FILES "${CMAKE_CURRENT_BINARY_DIR}/rc/locale.qrc") # This is also used in the Win32 rc file set(RC_INFO_STRING "A lightweight anime tracker built with Qt.") if(APPLE) # Mac OS X (or OS X (or macOS)) set(MACOSX_BUNDLE_BUNDLE_NAME "Minori") set(MACOSX_BUNDLE_BUNDLE_VERSION ${minori_VERSION}) set(MACOSX_BUNDLE_COPYRIGHT "Copyright (C) Paper 2023") set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.eu.us.paper.minori") set(MACOSX_BUNDLE_INFO_STRING ${RC_INFO_STRING}) set(MACOSX_BUNDLE_ICON_FILE rc/osx/favicon.icns) set(app_icon_osx "${CMAKE_CURRENT_SOURCE_DIR}/rc/osx/favicon.icns") set_source_files_properties(${app_icon_osx} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") list(APPEND SRC_FILES src/sys/osx/dark_theme.mm src/sys/osx/filesystem.mm ${app_icon_osx} ) elseif(WIN32) # Windows configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/rc/win32/version.rc.in ${CMAKE_CURRENT_BINARY_DIR}/rc/version.rc @ONLY ) list(APPEND SRC_FILES src/sys/win32/dark_theme.cc rc/win32/resource.rc ${CMAKE_CURRENT_BINARY_DIR}/rc/version.rc ) elseif(LINUX) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/rc/linux/Minori.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/rc/Minori.desktop @ONLY ) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/rc/favicon256.png ${CMAKE_CURRENT_BINARY_DIR}/rc/Minori.png COPYONLY ) endif() add_executable(minori WIN32 MACOSX_BUNDLE ${SRC_FILES}) set_property(TARGET minori PROPERTY CXX_STANDARD 17) set_property(TARGET minori PROPERTY AUTOMOC ON) set_property(TARGET minori PROPERTY AUTORCC ON) target_include_directories(minori PUBLIC ${CURL_INCLUDE_DIRS} PRIVATE ${INCLUDE}) target_include_directories(minori PUBLIC ${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS}) target_compile_options(minori PRIVATE -Wall -Wpedantic -Wextra -Wsuggest-override -Wold-style-cast) if(APPLE) target_compile_definitions(minori PUBLIC MACOSX) elseif(WIN32) target_compile_definitions(minori PUBLIC WIN32) endif() target_link_libraries(minori ${LIBRARIES}) if(WIN32) install(FILES $<TARGET_RUNTIME_DLLS:minori> TYPE BIN) endif()