mirror of
https://github.com/chenx-dust/EZ4Connect.git
synced 2026-09-20 10:23:33 +08:00
277 lines
10 KiB
CMake
277 lines
10 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 6.5 COMPONENTS
|
|
Core
|
|
Concurrent
|
|
Gui
|
|
Widgets
|
|
Network
|
|
Svg
|
|
Core5Compat
|
|
WebEngineWidgets
|
|
REQUIRED
|
|
)
|
|
|
|
|
|
set(SOURCE_FILES
|
|
main.cpp
|
|
presentation/main/mainwindow.cpp
|
|
presentation/main/mainwindowcoordinator.cpp
|
|
presentation/coordinators/authdialogcoordinator.cpp
|
|
presentation/coordinators/connectionuicontroller.cpp
|
|
application/applicationlogger.cpp
|
|
application/commandlineoptions.cpp
|
|
application/coreprocess.h
|
|
application/connectionsession.cpp
|
|
application/profileservice.cpp
|
|
application/settingsmigrator.cpp
|
|
application/systemproxysession.cpp
|
|
application/defaultsettings.cpp
|
|
infrastructure/coreprocess/corecommandbuilder.cpp
|
|
infrastructure/coreprocess/consoleoutputdecoder.cpp
|
|
infrastructure/coreprocess/coreexecutable.cpp
|
|
infrastructure/coreprocess/devicetrust.cpp
|
|
infrastructure/coreprocess/coreoutputbuffer.cpp
|
|
infrastructure/coreprocess/coreoutputparser.cpp
|
|
core/connectionsessionstate.cpp
|
|
infrastructure/logging/applicationlogfile.cpp
|
|
infrastructure/platform/autostart.cpp
|
|
infrastructure/platform/privileges.cpp
|
|
infrastructure/settings/settingsprofileloader.cpp
|
|
infrastructure/storage/applicationpaths.cpp
|
|
infrastructure/update/updatechecker.cpp
|
|
infrastructure/platform/platformsystemproxybackend.cpp
|
|
infrastructure/platform/systemproxyfunctions.cpp
|
|
infrastructure/coreprocess/zjuconnectprocess.cpp
|
|
presentation/presentationhelpers.cpp
|
|
presentation/dialogs/extrasettingwindow/extrasettingwindow.cpp
|
|
presentation/dialogs/settingwindow/settingwindow.cpp
|
|
presentation/dialogs/loginwindow/loginwindow.cpp
|
|
presentation/dialogs/sudowindow/sudowindow.cpp
|
|
presentation/dialogs/ssologinwebview/ssologinwebview.cpp
|
|
presentation/dialogs/authinfowindow/authinfowindow.cpp
|
|
presentation/dialogs/configurationguidedialog/configurationguidedialog.cpp
|
|
presentation/dialogs/graphcaptchawindow/graphcaptchawindow.cpp
|
|
presentation/dialogs/graphcaptchawindow/captchacanvas.cpp
|
|
infrastructure/settings/profilemanager.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 shell32)
|
|
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::Concurrent
|
|
Qt::Gui
|
|
Qt::Widgets
|
|
Qt::Network
|
|
Qt::Svg
|
|
Qt::Core5Compat
|
|
Qt::WebEngineWidgets
|
|
SingleApplication::SingleApplication
|
|
${PLATFORM_LIBS}
|
|
)
|
|
|
|
include(CTest)
|
|
|
|
if(BUILD_TESTING)
|
|
add_executable(applicationlogger_test
|
|
tests/applicationlogger_test.cpp
|
|
application/applicationlogger.cpp
|
|
)
|
|
target_include_directories(applicationlogger_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(applicationlogger_test Qt::Core)
|
|
add_test(NAME applicationlogger_test COMMAND applicationlogger_test)
|
|
|
|
add_executable(applicationlogfile_test
|
|
tests/applicationlogfile_test.cpp
|
|
infrastructure/logging/applicationlogfile.cpp
|
|
)
|
|
target_include_directories(applicationlogfile_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(applicationlogfile_test Qt::Core)
|
|
add_test(NAME applicationlogfile_test COMMAND applicationlogfile_test)
|
|
|
|
add_executable(corecommandbuilder_test
|
|
tests/corecommandbuilder_test.cpp
|
|
infrastructure/coreprocess/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
|
|
infrastructure/coreprocess/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(coreoutputbuffer_test
|
|
tests/coreoutputbuffer_test.cpp
|
|
infrastructure/coreprocess/coreoutputbuffer.cpp
|
|
)
|
|
target_include_directories(coreoutputbuffer_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(coreoutputbuffer_test Qt::Core)
|
|
add_test(NAME coreoutputbuffer_test COMMAND coreoutputbuffer_test)
|
|
|
|
add_executable(settingsprofileloader_test
|
|
tests/settingsprofileloader_test.cpp
|
|
infrastructure/settings/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)
|
|
|
|
add_executable(connectionsessionstate_test
|
|
tests/connectionsessionstate_test.cpp
|
|
core/connectionsessionstate.cpp
|
|
)
|
|
target_include_directories(connectionsessionstate_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(connectionsessionstate_test Qt::Core)
|
|
add_test(NAME connectionsessionstate_test COMMAND connectionsessionstate_test)
|
|
|
|
add_executable(connectionsession_test
|
|
tests/connectionsession_test.cpp
|
|
application/coreprocess.h
|
|
application/connectionsession.cpp
|
|
core/connectionsessionstate.cpp
|
|
)
|
|
target_include_directories(connectionsession_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(connectionsession_test Qt::Core)
|
|
add_test(NAME connectionsession_test COMMAND connectionsession_test)
|
|
|
|
add_executable(systemproxysession_test
|
|
tests/systemproxysession_test.cpp
|
|
application/systemproxysession.cpp
|
|
)
|
|
target_include_directories(systemproxysession_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(systemproxysession_test Qt::Core Qt::Concurrent)
|
|
add_test(NAME systemproxysession_test COMMAND systemproxysession_test)
|
|
|
|
add_executable(updatechecker_test
|
|
tests/updatechecker_test.cpp
|
|
infrastructure/update/updatechecker.cpp
|
|
infrastructure/coreprocess/coreexecutable.cpp
|
|
)
|
|
target_include_directories(updatechecker_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(updatechecker_test Qt::Core Qt::Gui Qt::Widgets Qt::Network Qt::Core5Compat)
|
|
add_test(NAME updatechecker_test COMMAND updatechecker_test)
|
|
|
|
add_executable(settingsmigrator_test
|
|
tests/settingsmigrator_test.cpp
|
|
application/settingsmigrator.cpp
|
|
application/defaultsettings.cpp
|
|
)
|
|
target_include_directories(settingsmigrator_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(settingsmigrator_test Qt::Core)
|
|
add_test(NAME settingsmigrator_test COMMAND settingsmigrator_test)
|
|
|
|
add_executable(profileservice_test
|
|
tests/profileservice_test.cpp
|
|
application/profileservice.cpp
|
|
)
|
|
target_include_directories(profileservice_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(profileservice_test Qt::Core)
|
|
add_test(NAME profileservice_test COMMAND profileservice_test)
|
|
|
|
add_executable(profilemanager_test
|
|
tests/profilemanager_test.cpp
|
|
infrastructure/settings/profilemanager.cpp
|
|
)
|
|
target_include_directories(profilemanager_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(profilemanager_test Qt::Core)
|
|
add_test(NAME profilemanager_test COMMAND profilemanager_test)
|
|
|
|
add_executable(configurationguidedialog_test
|
|
tests/configurationguidedialog_test.cpp
|
|
presentation/dialogs/configurationguidedialog/configurationguidedialog.cpp
|
|
presentation/dialogs/authinfowindow/authinfowindow.cpp
|
|
infrastructure/coreprocess/consoleoutputdecoder.cpp
|
|
infrastructure/coreprocess/coreexecutable.cpp
|
|
)
|
|
target_include_directories(configurationguidedialog_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(configurationguidedialog_test
|
|
Qt::Core
|
|
Qt::Gui
|
|
Qt::Widgets
|
|
Qt::Core5Compat
|
|
)
|
|
add_test(NAME configurationguidedialog_test COMMAND configurationguidedialog_test)
|
|
set_tests_properties(configurationguidedialog_test PROPERTIES
|
|
ENVIRONMENT "QT_QPA_PLATFORM=offscreen"
|
|
)
|
|
|
|
add_executable(graphcaptchawindow_test
|
|
tests/graphcaptchawindow_test.cpp
|
|
presentation/dialogs/graphcaptchawindow/graphcaptchawindow.cpp
|
|
presentation/dialogs/graphcaptchawindow/captchacanvas.cpp
|
|
)
|
|
target_include_directories(graphcaptchawindow_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(graphcaptchawindow_test Qt::Core Qt::Gui Qt::Widgets)
|
|
add_test(NAME graphcaptchawindow_test COMMAND graphcaptchawindow_test)
|
|
set_tests_properties(graphcaptchawindow_test PROPERTIES
|
|
ENVIRONMENT "QT_QPA_PLATFORM=offscreen"
|
|
)
|
|
endif()
|