cmake_minimum_required(VERSION 3.16) project(ClientChat 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) # 查找模块 find_package(Qt6 COMPONENTS Core Protobuf Widgets Network WebSockets Multimedia QUIET) set(QT_VERSION_MAJOR 6) # 设置 UI 文件的搜索路径 set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/ui) # proto文件 file(GLOB PB_FILES proto/*.proto ) # 源文件 # file(GLOB PROJECT_SOURCES # include/model/*.h src/model/*.cpp # include/network/*.h src/network/*.cpp # include/*.h src/*.cpp # ui/*.ui # resource/qrc/*.qrc # ) # 显式列出源文件 set(PROJECT_SOURCES src/model/datacenter.cpp src/network/netclient.cpp src/addfrienddialog.cpp src/choosefrienddialog.cpp src/groupsessiondetailwidget.cpp src/historymessagewidget.cpp src/loginwidget.cpp src/main.cpp src/mainwidget.cpp src/messageeditarea.cpp src/messageshowarea.cpp src/phoneloginwidget.cpp src/selfinfowidget.cpp src/sessiondetailwidget.cpp src/sessionfriendarea.cpp src/soundrecorder.cpp src/toast.cpp src/userinfowidget.cpp src/verifycodewidget.cpp ) # 显式列出头文件 set(PROJECT_HEADERS include/model/data.h include/model/datacenter.h include/network/netclient.h include/addfrienddialog.h include/choosefrienddialog.h include/debug.h include/groupsessiondetailwidget.h include/historymessagewidget.h include/loginwidget.h include/mainwidget.h include/messageeditarea.h include/messageshowarea.h include/phoneloginwidget.h include/selfinfowidget.h include/sessiondetailwidget.h include/sessionfriendarea.h include/soundrecorder.h include/toast.h include/userinfowidget.h include/verifycodewidget.h ) # 显式列出 UI 文件 set(PROJECT_FORMS ui/mainwidget.ui ) # 显式列出资源文件 set(PROJECT_RESOURCES resource.qrc ) if(ANDROID) # Android 平台:附加 Android 可部署资源 qt_add_executable(ClientChat MANUAL_FINALIZATION # ${PROJECT_SOURCES} ${PROJECT_SOURCES} ${PROJECT_HEADERS} ${PROJECT_FORMS} ${PROJECT_RESOURCES} ) # 指定自定义的 Android 部署目录 # set_property(TARGET ClientChat APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") else() if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) qt_add_executable(ClientChat MANUAL_FINALIZATION # ${PROJECT_SOURCES} ${PROJECT_SOURCES} ${PROJECT_HEADERS} ${PROJECT_FORMS} ${PROJECT_RESOURCES} ) qt_add_protobuf(ClientChat PROTO_FILES ${PB_FILES}) endif() endif() # 添加包含目录 target_include_directories(ClientChat PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/include/model ${CMAKE_CURRENT_SOURCE_DIR}/include/network ) # 链接动态库 target_link_libraries(ClientChat PRIVATE Qt6::Core Qt${QT_VERSION_MAJOR}::Widgets Qt6::Network Qt6::WebSockets Qt6::Multimedia )