Files
EZ4Connect/CMakeLists.txt
2026-08-10 19:04:20 +08:00

140 lines
3.6 KiB
CMake

cmake_minimum_required(VERSION 3.12)
project(EZ4Connect)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
option(NIGHTLY_BUILD "Set if built nightly.")
if(NIGHTLY_BUILD)
set(PROJ_VER "${GIT_HASH}-nightly")
elseif(DEFINED REL_VER)
set(PROJ_VER "${REL_VER}")
else()
set(PROJ_VER "dev")
endif()
add_compile_definitions(PROJ_VER="${PROJ_VER}")
message("PROJ_VER=${PROJ_VER}")
find_package(Qt6 COMPONENTS
Core
Gui
Widgets
Network
Svg
Core5Compat
WebEngineWidgets
REQUIRED
)
set(SOURCE_FILES
main.cpp
mainwindow.cpp
zjuconnectmode.cpp
core/corecommandbuilder.cpp
core/coreoutputparser.cpp
infrastructure/settingsprofileloader.cpp
zjuconnectcontroller/zjuconnectcontroller.cpp
extrasettingwindow/extrasettingwindow.cpp
settingwindow/settingwindow.cpp
loginwindow/loginwindow.cpp
sudowindow/sudowindow.cpp
ssologinwebview/ssologinwebview.cpp
authinfowindow/authinfowindow.cpp
graphcaptchawindow/graphcaptchawindow.cpp
graphcaptchawindow/captchacanvas.cpp
utils/utils.cpp
utils/profilemanager.cpp
utils/proxysettings.cpp
utils/coreversion.cpp
utils/trustdevice.cpp
resource.qrc
)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
if (WIN32)
message("Building for Windows")
enable_language("RC")
add_executable(${PROJECT_NAME} WIN32
${SOURCE_FILES}
${CMAKE_CURRENT_SOURCE_DIR}/resource/icon.rc
)
set(PLATFORM_LIBS wininet rasapi32)
elseif(APPLE)
message("Building for MacOS")
set(MACOSX_BUNDLE_ICON_FILE icon.icns)
set(app_icon_macos ${CMAKE_CURRENT_SOURCE_DIR}/resource/icon.icns)
set_source_files_properties(${app_icon_macos} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
add_executable(${PROJECT_NAME} MACOSX_BUNDLE
${SOURCE_FILES}
${app_icon_macos}
)
set_target_properties(${PROJECT_NAME}
PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/resource/Info.plist")
else()
add_executable(${PROJECT_NAME}
${SOURCE_FILES}
)
install(
TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
)
endif()
set(QAPPLICATION_CLASS QApplication CACHE STRING "Inheritance class for SingleApplication")
add_subdirectory(singleapplication)
target_link_libraries(${PROJECT_NAME}
Qt::Core
Qt::Gui
Qt::Widgets
Qt::Network
Qt::Svg
Qt::Core5Compat
Qt::WebEngineWidgets
SingleApplication::SingleApplication
${PLATFORM_LIBS}
)
include(CTest)
if(BUILD_TESTING)
add_executable(corecommandbuilder_test
tests/corecommandbuilder_test.cpp
core/corecommandbuilder.cpp
)
target_include_directories(corecommandbuilder_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(corecommandbuilder_test Qt::Core)
add_test(NAME corecommandbuilder_test COMMAND corecommandbuilder_test)
add_executable(coreoutputparser_test
tests/coreoutputparser_test.cpp
core/coreoutputparser.cpp
)
target_include_directories(coreoutputparser_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(coreoutputparser_test Qt::Core)
add_test(NAME coreoutputparser_test COMMAND coreoutputparser_test)
add_executable(settingsprofileloader_test
tests/settingsprofileloader_test.cpp
infrastructure/settingsprofileloader.cpp
)
target_include_directories(settingsprofileloader_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(settingsprofileloader_test Qt::Core)
add_test(NAME settingsprofileloader_test COMMAND settingsprofileloader_test)
endif()