2026-08-28 00:13:59 +03:00
|
|
|
|
cmake_minimum_required(VERSION 3.20)
|
2025-10-25 15:49:45 +03:00
|
|
|
|
|
2026-10-23 09:55:15 +03:00
|
|
|
|
project(BiLauncher VERSION 1.0.1 LANGUAGES CXX C)
|
2026-10-23 14:11:45 +03:00
|
|
|
|
set(LAUNCHER_VERSION_SUFFIX "-rc")
|
2026-10-23 09:55:15 +03:00
|
|
|
|
set(LAUNCHER_VERSION "${PROJECT_VERSION}${LAUNCHER_VERSION_SUFFIX}")
|
2025-10-25 15:49:45 +03:00
|
|
|
|
|
2025-12-29 02:18:35 +03:00
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
2026-09-01 22:25:23 +03:00
|
|
|
|
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
2026-10-04 22:19:20 +03:00
|
|
|
|
find_package(Qt6 REQUIRED COMPONENTS Quick QuickControls2 Qml Svg Core CorePrivate Gui Network)
|
2026-09-01 22:25:23 +03:00
|
|
|
|
find_package(Qt6 QUIET COMPONENTS WebEngineQuick)
|
|
|
|
|
|
if(Qt6WebEngineQuick_FOUND)
|
|
|
|
|
|
message(STATUS "Qt WebEngine найден: вход через аккаунт Microsoft будет доступен")
|
|
|
|
|
|
set(LAUNCHER_MSA_QML_FILES MicrosoftLoginDialog.qml)
|
|
|
|
|
|
else()
|
|
|
|
|
|
message(WARNING
|
|
|
|
|
|
"Qt WebEngine не найден — лаунчер соберётся без входа через аккаунт Microsoft. "
|
|
|
|
|
|
"Чтобы его включить, доустановите в MaintenanceTool для своей версии Qt сразу три "
|
|
|
|
|
|
"компонента: Qt WebEngine, Qt WebChannel и Qt Positioning.")
|
|
|
|
|
|
set(LAUNCHER_MSA_QML_FILES "")
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
2025-12-29 02:18:35 +03:00
|
|
|
|
qt_standard_project_setup(REQUIRES 6.8)
|
2025-10-25 15:49:45 +03:00
|
|
|
|
|
2026-09-21 00:27:52 +03:00
|
|
|
|
set(LAUNCHER_ICON_DIR "${CMAKE_CURRENT_SOURCE_DIR}/icons")
|
|
|
|
|
|
|
|
|
|
|
|
if(WIN32)
|
2026-10-04 23:46:57 +03:00
|
|
|
|
configure_file("${LAUNCHER_ICON_DIR}/icon.rc.in"
|
|
|
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/icon.rc" @ONLY)
|
|
|
|
|
|
set(LAUNCHER_APP_ICON "${CMAKE_CURRENT_BINARY_DIR}/icon.rc")
|
2026-09-21 00:27:52 +03:00
|
|
|
|
elseif(APPLE)
|
|
|
|
|
|
set(LAUNCHER_APP_ICON "${LAUNCHER_ICON_DIR}/icon.icns")
|
|
|
|
|
|
set_source_files_properties(${LAUNCHER_APP_ICON} PROPERTIES
|
|
|
|
|
|
MACOSX_PACKAGE_LOCATION "Resources")
|
|
|
|
|
|
else()
|
|
|
|
|
|
set(LAUNCHER_APP_ICON "")
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
qt_add_executable(BiLauncher
|
2025-10-25 15:49:45 +03:00
|
|
|
|
main.cpp
|
2026-09-21 00:27:52 +03:00
|
|
|
|
${LAUNCHER_APP_ICON}
|
2025-12-29 02:18:35 +03:00
|
|
|
|
)
|
2025-10-25 15:49:45 +03:00
|
|
|
|
|
2026-09-21 00:27:52 +03:00
|
|
|
|
qt_add_resources(BiLauncher "appicon"
|
|
|
|
|
|
PREFIX "/icons"
|
|
|
|
|
|
BASE "icons"
|
|
|
|
|
|
FILES
|
|
|
|
|
|
icons/icon_16x16.png
|
|
|
|
|
|
icons/icon_16x16@2x.png
|
|
|
|
|
|
icons/icon_24x24.png
|
|
|
|
|
|
icons/icon_32x32.png
|
|
|
|
|
|
icons/icon_32x32@2x.png
|
|
|
|
|
|
icons/icon_48x48.png
|
|
|
|
|
|
icons/icon_64x64.png
|
|
|
|
|
|
icons/icon_128x128.png
|
|
|
|
|
|
icons/icon_128x128@2x.png
|
|
|
|
|
|
icons/icon_256x256.png
|
|
|
|
|
|
icons/icon_256x256@2x.png
|
|
|
|
|
|
icons/icon_512x512.png
|
|
|
|
|
|
icons/icon_512x512@2x.png
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2026-10-20 17:42:45 +03:00
|
|
|
|
# Путь импорта для QML code model Qt Creator / qmlls: модуль лежит в
|
|
|
|
|
|
# ${CMAKE_CURRENT_BINARY_DIR}/qml, а не в корне каталога сборки.
|
|
|
|
|
|
set(QML_IMPORT_PATH "${CMAKE_CURRENT_BINARY_DIR}/qml"
|
|
|
|
|
|
CACHE STRING "Пути импорта QML для Qt Creator" FORCE)
|
|
|
|
|
|
|
2026-09-21 00:27:52 +03:00
|
|
|
|
qt_add_qml_module(BiLauncher
|
2026-09-21 01:23:00 +03:00
|
|
|
|
URI BiLauncher
|
2026-10-08 19:44:41 +03:00
|
|
|
|
OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/qml/BiLauncher"
|
2026-06-09 00:43:06 +03:00
|
|
|
|
SOURCES
|
2026-09-03 09:18:48 +03:00
|
|
|
|
localization.h
|
|
|
|
|
|
localization.cpp
|
2026-06-09 00:43:06 +03:00
|
|
|
|
launcherbackend.h
|
|
|
|
|
|
launcherbackend.cpp
|
2026-08-23 03:30:31 +03:00
|
|
|
|
launcherpaths.h
|
|
|
|
|
|
launcherpaths.cpp
|
2026-08-22 18:19:13 +03:00
|
|
|
|
minecraftversion.h
|
|
|
|
|
|
minecraftversion.cpp
|
|
|
|
|
|
javalocator.h
|
|
|
|
|
|
javalocator.cpp
|
2026-08-28 00:13:59 +03:00
|
|
|
|
zlibreference.h
|
|
|
|
|
|
zlibreference.cpp
|
2026-08-27 19:35:11 +03:00
|
|
|
|
javaruntime.h
|
|
|
|
|
|
javaruntime.cpp
|
|
|
|
|
|
javaruntimeservice.h
|
|
|
|
|
|
javaruntimeservice.cpp
|
|
|
|
|
|
javainstaller.h
|
|
|
|
|
|
javainstaller.cpp
|
2026-08-22 18:19:13 +03:00
|
|
|
|
authservice.h
|
|
|
|
|
|
authservice.cpp
|
2026-09-01 22:25:23 +03:00
|
|
|
|
msaauthservice.h
|
|
|
|
|
|
msaauthservice.cpp
|
2026-08-22 18:19:13 +03:00
|
|
|
|
gamelauncher.h
|
|
|
|
|
|
gamelauncher.cpp
|
2026-08-24 21:09:52 +03:00
|
|
|
|
versionmanifestservice.h
|
|
|
|
|
|
versionmanifestservice.cpp
|
|
|
|
|
|
versioninstaller.h
|
|
|
|
|
|
versioninstaller.cpp
|
2026-08-27 09:21:51 +03:00
|
|
|
|
modloader.h
|
|
|
|
|
|
modloaderversionservice.h
|
|
|
|
|
|
modloaderversionservice.cpp
|
|
|
|
|
|
modloaderinstaller.h
|
|
|
|
|
|
modloaderinstaller.cpp
|
|
|
|
|
|
buildarchiveworker.h
|
|
|
|
|
|
buildarchiveworker.cpp
|
|
|
|
|
|
buildswitcher.h
|
|
|
|
|
|
buildswitcher.cpp
|
2026-10-23 09:55:15 +03:00
|
|
|
|
gamedirimport.h
|
|
|
|
|
|
gamedirimport.cpp
|
2026-08-31 00:59:14 +03:00
|
|
|
|
seasonalbuildservice.h
|
|
|
|
|
|
seasonalbuildservice.cpp
|
|
|
|
|
|
seasonalpackdownloader.h
|
|
|
|
|
|
seasonalpackdownloader.cpp
|
2025-12-29 02:18:35 +03:00
|
|
|
|
QML_FILES
|
|
|
|
|
|
Main.qml
|
2026-08-27 09:21:51 +03:00
|
|
|
|
DarkCombo.qml
|
2026-08-27 16:44:42 +03:00
|
|
|
|
VersionPickerDialog.qml
|
2026-08-27 19:35:11 +03:00
|
|
|
|
JavaPickerDialog.qml
|
2026-08-27 09:21:51 +03:00
|
|
|
|
LabelledField.qml
|
|
|
|
|
|
BuildsDialog.qml
|
2026-08-31 00:59:14 +03:00
|
|
|
|
SeasonalBuildsDialog.qml
|
2026-08-27 09:21:51 +03:00
|
|
|
|
LoaderRow.qml
|
|
|
|
|
|
ProgressPanel.qml
|
2026-09-01 22:25:23 +03:00
|
|
|
|
${LAUNCHER_MSA_QML_FILES}
|
2026-09-03 09:18:48 +03:00
|
|
|
|
RESOURCES images/Folder/Folder_Active.svg images/Folder/Folder_Idle.svg images/Folder/Folder_Pressed.svg images/Options/Options_active.svg images/Options/Options_Idle.svg images/Options/Options_Pressed.svg images/Play_Button/Play_Active.svg images/Play_Button/Play_Idle.svg images/Play_Button/Play_pressed.svg images/Profile_Box/Asset_23.jpg images/Profile_Box/Asset_23.svg images/Profile_Box/Asset_24.jpg images/Profile_Box/Asset_24.svg images/Profile_Box/Kishka_Profile_Active.svg images/Profile_Box/Kishka_Profile_Idle.svg images/Profile_Box/Kishka_Profile_open.svg images/Scroll/Scroll_Lever.svg images/Scroll/Scroll_palka.svg images/Version_box/Kishka_Profile_Open.svg images/Version_box/Kishka_Ver_Active.svg images/Version_box/Kishka_Ver_idle.svg images/Trash.svg images/Pencil.svg images/GovuztTW8AAHqBf.jpeg images/photo_2025-12-16_15-04-17.jpg images/photo_2025-12-21_02-30-09.jpg i18n/translations.json
|
2026-09-21 00:27:52 +03:00
|
|
|
|
RESOURCES images/launcherBackground.png
|
2026-10-08 19:44:41 +03:00
|
|
|
|
RESOURCES images/launcherBackground2static.jpg
|
2026-10-04 23:46:57 +03:00
|
|
|
|
RESOURCES CHANGELOG.md
|
|
|
|
|
|
RESOURCES LICENSE
|
2026-10-06 14:24:27 +03:00
|
|
|
|
RESOURCES README.md
|
2025-12-29 02:18:35 +03:00
|
|
|
|
)
|
2025-10-25 15:49:45 +03:00
|
|
|
|
|
2025-12-29 02:18:35 +03:00
|
|
|
|
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
|
|
|
|
|
|
# If you are developing for iOS or macOS you should consider setting an
|
|
|
|
|
|
# explicit, fixed bundle identifier manually though.
|
2026-09-21 00:27:52 +03:00
|
|
|
|
set_target_properties(BiLauncher PROPERTIES
|
2026-09-30 20:46:20 +03:00
|
|
|
|
MACOSX_BUNDLE_GUI_IDENTIFIER com.galeondev.BiLauncher
|
2025-12-29 02:18:35 +03:00
|
|
|
|
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
|
2026-10-04 22:19:20 +03:00
|
|
|
|
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION}
|
2026-09-21 00:27:52 +03:00
|
|
|
|
MACOSX_BUNDLE_ICON_FILE icon.icns
|
2025-12-29 02:18:35 +03:00
|
|
|
|
MACOSX_BUNDLE TRUE
|
|
|
|
|
|
WIN32_EXECUTABLE TRUE
|
2025-10-25 15:49:45 +03:00
|
|
|
|
)
|
|
|
|
|
|
|
2026-09-21 00:27:52 +03:00
|
|
|
|
target_link_libraries(BiLauncher
|
2026-10-04 22:19:20 +03:00
|
|
|
|
PRIVATE Qt6::Quick Qt6::QuickControls2 Qt6::Svg Qt6::Core Qt6::CorePrivate Qt6::Gui Qt6::Network
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
target_compile_definitions(BiLauncher PRIVATE
|
2026-10-23 09:55:15 +03:00
|
|
|
|
LAUNCHER_VERSION="${LAUNCHER_VERSION}"
|
2025-10-25 15:49:45 +03:00
|
|
|
|
)
|
|
|
|
|
|
|
2026-09-01 22:25:23 +03:00
|
|
|
|
if(Qt6WebEngineQuick_FOUND)
|
2026-09-21 00:27:52 +03:00
|
|
|
|
target_link_libraries(BiLauncher PRIVATE Qt6::WebEngineQuick)
|
|
|
|
|
|
target_compile_definitions(BiLauncher PRIVATE LAUNCHER_HAS_WEBENGINE)
|
2026-09-01 22:25:23 +03:00
|
|
|
|
endif()
|
|
|
|
|
|
|
2025-10-25 15:49:45 +03:00
|
|
|
|
include(GNUInstallDirs)
|
2026-08-28 00:13:59 +03:00
|
|
|
|
|
|
|
|
|
|
if(UNIX AND NOT APPLE)
|
2026-09-29 09:38:12 +03:00
|
|
|
|
set(LAUNCHER_ZLIB_DIR "${CMAKE_INSTALL_LIBDIR}/BiLauncher")
|
2026-08-28 01:51:12 +03:00
|
|
|
|
set(LAUNCHER_ZLIB_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/zlib")
|
2026-08-28 00:13:59 +03:00
|
|
|
|
|
|
|
|
|
|
add_library(launcher_zlib_reference SHARED
|
2026-08-28 01:51:12 +03:00
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/adler32.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/compress.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/crc32.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/deflate.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/gzclose.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/gzlib.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/gzread.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/gzwrite.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/infback.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/inffast.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/inflate.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/inftrees.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/trees.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/uncompr.c
|
|
|
|
|
|
${LAUNCHER_ZLIB_SOURCES}/zutil.c
|
2026-08-28 00:13:59 +03:00
|
|
|
|
)
|
2026-08-28 01:51:12 +03:00
|
|
|
|
target_include_directories(launcher_zlib_reference PRIVATE ${LAUNCHER_ZLIB_SOURCES})
|
2026-09-21 00:27:52 +03:00
|
|
|
|
|
2026-08-28 00:13:59 +03:00
|
|
|
|
target_compile_definitions(launcher_zlib_reference PRIVATE
|
|
|
|
|
|
HAVE_UNISTD_H=1 HAVE_STDARG_H=1 _LARGEFILE64_SOURCE=1)
|
2026-09-21 00:27:52 +03:00
|
|
|
|
|
2026-08-28 00:13:59 +03:00
|
|
|
|
set_target_properties(launcher_zlib_reference PROPERTIES
|
|
|
|
|
|
OUTPUT_NAME z
|
|
|
|
|
|
VERSION 1.3.1
|
|
|
|
|
|
SOVERSION 1
|
|
|
|
|
|
C_VISIBILITY_PRESET default
|
2026-09-21 00:27:52 +03:00
|
|
|
|
LIBRARY_OUTPUT_DIRECTORY $<TARGET_FILE_DIR:BiLauncher>/zlib
|
2026-08-28 00:13:59 +03:00
|
|
|
|
)
|
2026-09-21 00:27:52 +03:00
|
|
|
|
add_dependencies(BiLauncher launcher_zlib_reference)
|
2026-08-28 00:13:59 +03:00
|
|
|
|
|
2026-09-21 00:27:52 +03:00
|
|
|
|
target_compile_definitions(BiLauncher PRIVATE
|
2026-09-29 09:38:12 +03:00
|
|
|
|
LAUNCHER_ZLIB_INSTALL_DIR="${CMAKE_INSTALL_FULL_LIBDIR}/BiLauncher"
|
2026-08-28 00:13:59 +03:00
|
|
|
|
)
|
|
|
|
|
|
install(TARGETS launcher_zlib_reference LIBRARY DESTINATION ${LAUNCHER_ZLIB_DIR})
|
2026-09-21 00:27:52 +03:00
|
|
|
|
|
|
|
|
|
|
foreach(icon_size IN ITEMS 16 24 32 48 64 128 256 512)
|
|
|
|
|
|
install(FILES "${LAUNCHER_ICON_DIR}/icon_${icon_size}x${icon_size}.png"
|
|
|
|
|
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${icon_size}x${icon_size}/apps"
|
|
|
|
|
|
RENAME bilauncher.png)
|
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
|
|
install(FILES "${LAUNCHER_ICON_DIR}/bilauncher.desktop"
|
|
|
|
|
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications")
|
2026-08-28 00:13:59 +03:00
|
|
|
|
endif()
|
|
|
|
|
|
|
2026-10-04 22:19:20 +03:00
|
|
|
|
if(NOT APPLE)
|
|
|
|
|
|
install(FILES
|
|
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/LICENSE"
|
|
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.md"
|
|
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/packaging/THIRD_PARTY_LICENSES.txt"
|
|
|
|
|
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/doc/BiLauncher")
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
2026-09-21 00:27:52 +03:00
|
|
|
|
install(TARGETS BiLauncher
|
2025-12-29 02:18:35 +03:00
|
|
|
|
BUNDLE DESTINATION .
|
2025-10-25 15:49:45 +03:00
|
|
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
2025-12-29 02:18:35 +03:00
|
|
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
2025-10-25 15:49:45 +03:00
|
|
|
|
)
|
2026-09-30 20:46:20 +03:00
|
|
|
|
set(deploy_opts "")
|
|
|
|
|
|
if(APPLE)
|
2026-10-04 22:19:20 +03:00
|
|
|
|
set(deploy_opts -hardened-runtime)
|
2026-09-30 20:46:20 +03:00
|
|
|
|
endif()
|
|
|
|
|
|
qt_generate_deploy_qml_app_script(
|
|
|
|
|
|
TARGET BiLauncher
|
|
|
|
|
|
OUTPUT_SCRIPT deploy_script
|
|
|
|
|
|
MACOS_BUNDLE_POST_BUILD
|
|
|
|
|
|
NO_UNSUPPORTED_PLATFORM_ERROR
|
|
|
|
|
|
DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM
|
|
|
|
|
|
DEPLOY_TOOL_OPTIONS ${deploy_opts})
|
2026-10-12 13:14:08 +03:00
|
|
|
|
install(SCRIPT ${deploy_script})
|
|
|
|
|
|
option(BILAUNCHER_BUILD_TESTS "Собрать автотесты (ctest)" OFF)
|
|
|
|
|
|
if(BILAUNCHER_BUILD_TESTS)
|
|
|
|
|
|
enable_testing()
|
|
|
|
|
|
add_subdirectory(tests)
|
|
|
|
|
|
endif()
|