cmake_minimum_required(VERSION 3.16)
project(StudentInfoSystem VERSION 0.1 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(QT_MODULES
Core Gui Qml Quick QuickControls2 Charts QuickControls2Impl
)
set(CMAKE_PREFIX_PATH "E:/Tools/Develop/Embedded/Qt6.8.1/6.8.1/mingw_64")
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS ${QT_MODULES})
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS ${QT_MODULES})
function(format_qt_modules OUTPUT_VAR)
set(formatted_list)
foreach(module IN LISTS ARGN)
list(APPEND formatted_list "Qt${QT_VERSION_MAJOR}::${module}")
endforeach()
set(${OUTPUT_VAR} ${formatted_list} PARENT_SCOPE)
endfunction()
file(GLOB_RECURSE QML_SRCS "qml.qrc")
file(GLOB_RECURSE CORE_SRCS
"src/core/*.*"
)
file(GLOB_RECURSE DATA_SRCS
"src/data/*.*"
)
file(GLOB_RECURSE SERVICES_SRCS
"src/services/*.*"
)
file(GLOB_RECURSE TEST_SRCS
"tests/*.*"
)
include_directories(. src)
set(PROJECT_SOURCES
${CORE_SRCS}
${DATA_SRCS}
${SERVICES_SRCS}
${TEST_SRCS}
${QML_SRCS}
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(StudentInfoSystem
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
else()
if(ANDROID)
add_library(StudentInfoSystem SHARED
${PROJECT_SOURCES}
)
else()
add_executable(StudentInfoSystem
${PROJECT_SOURCES}
)
endif()
endif()
format_qt_modules(FORMATTED_MODULES ${QT_MODULES})
message(STATUS "${FORMATTED_MODULES}")
target_link_libraries(StudentInfoSystem PRIVATE ${FORMATTED_MODULES})
if(${QT_VERSION} VERSION_LESS 6.1.0)
set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.StudentInfoSystem)
endif()
set_target_properties(StudentInfoSystem PROPERTIES
${BUNDLE_ID_OPTION}
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
include(GNUInstallDirs)
install(TARGETS StudentInfoSystem
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(StudentInfoSystem)
endif()