cmake_minimum_required(VERSION 3.16)

project(Minecraft_launcher VERSION 0.1 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD_REQUIRED ON)

# CorePrivate нужен ради QZipReader — им распаковываются нативные библиотеки LWJGL.
find_package(Qt6 REQUIRED COMPONENTS Quick QuickControls2 Core CorePrivate Gui Network)

qt_standard_project_setup(REQUIRES 6.8)

qt_add_executable(appMinecraft_launcher
    main.cpp
)

qt_add_qml_module(appMinecraft_launcher
    URI Minecraft_launcher
    SOURCES
        launcherbackend.h
        launcherbackend.cpp
        launcherpaths.h
        launcherpaths.cpp
        minecraftversion.h
        minecraftversion.cpp
        javalocator.h
        javalocator.cpp
        javaruntime.h
        javaruntime.cpp
        javaruntimeservice.h
        javaruntimeservice.cpp
        javainstaller.h
        javainstaller.cpp
        authservice.h
        authservice.cpp
        gamelauncher.h
        gamelauncher.cpp
        versionmanifestservice.h
        versionmanifestservice.cpp
        versioninstaller.h
        versioninstaller.cpp
        modloader.h
        modloaderversionservice.h
        modloaderversionservice.cpp
        modloaderinstaller.h
        modloaderinstaller.cpp
        buildarchiveworker.h
        buildarchiveworker.cpp
        buildswitcher.h
        buildswitcher.cpp
    QML_FILES
        Main.qml
        DarkCombo.qml
        VersionPickerDialog.qml
        JavaPickerDialog.qml
        LabelledField.qml
        BuildsDialog.qml
        LoaderRow.qml
        ProgressPanel.qml
        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
)

# 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.
set_target_properties(appMinecraft_launcher PROPERTIES
#    MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appMinecraft_launcher
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

target_link_libraries(appMinecraft_launcher
    PRIVATE Qt6::Quick Qt6::QuickControls2 Qt6::Core Qt6::CorePrivate Qt6::Gui Qt6::Network
)

include(GNUInstallDirs)
install(TARGETS appMinecraft_launcher
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
