环境搭建

  1. 注册声网账号,完成实名认证,创建项目。根据频道名生成临时Token
  2. 下载声网视频SDK,编译调试。这里我下载Windows的版本是3.7.0.2
  3. CMAKE配置示例如下:
cmake_minimum_required(VERSION 3.20)
project(HelloMetting VERSION 1.0 LANGUAGES CXX)

find_package(QT NAMES Qt5 REQUIRED COMPONENTS Core Gui Widgets PrintSupport )
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS  Core Gui Widgets PrintSupport)

# 设置源文件编码为UTF-8
if(MSVC)
    add_compile_options(/utf-8)
    
endif()

# 自动处理Qt的moc、uic、rcc
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

message(STATUS "CMAKE_CURRENT_BINARY_DIR: ${CMAKE_CURRENT_BINARY_DIR}")

# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

file(GLOB copyResources 
    "${CMAKE_SOURCE_DIR}/LICENSE"
    "${CMAKE_SOURCE_DIR}/assets/*.dll"
    "${CMAKE_SOURCE_DIR}/etc/AgoraConfigOpenVideoCall.ini"
)
file(COPY ${copyResources} DESTINATION ${CMAKE_BINARY_DIR})

# 源文件列表
file(GLOB PROJECT_SOURCES
    "${CMAKE_SOURCE_DIR}/src/*.cpp"
)

message("PROJECT_SOURCES:${PROJECT_SOURCES}")

# 设置 UI 文件搜索路径
set(CMAKE_AUTOUIC_SEARCH_PATHS
    "${CMAKE_SOURCE_DIR}/ui"
)
# UI文件
file(GLOB UI_FILES
    "${CMAKE_SOURCE_DIR}/ui/*.ui"
)

# 资源文件
file(GLOB RESOURCE_FILES
    "${CMAKE_SOURCE_DIR}/res/*.qrc"
)

# 创建可执行文件
file(GLOB HEADERS 
    "${CMAKE_SOURCE_DIR}/include/*.h"
)

IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
    # Debug模式显示用于调试的控制台
    ADD_EXECUTABLE(${PROJECT_NAME} 
        ${HEADERS}          #MOC处理使用了Qt元系统的头文件
        ${PROJECT_SOURCES}
        ${RESOURCE_FILES}
        ${UI_FILES}
        )
ELSE()
    # Release模式不显示控制台
    ADD_EXECUTABLE(${PROJECT_NAME} WIN32
        ${HEADERS}          #MOC处理使用了Qt元系统的头文件
        ${PROJECT_SOURCES}
        ${RESOURCE_FILES}
        ${UI_FILES}
        )
ENDIF()

# 设置 MOC选项和生成路径
set_target_properties(${PROJECT_NAME} PROPERTIES
    AUTOMOC_MOC_OPTIONS "-I${CMAKE_CURRENT_SOURCE_DIR}/include"
)

# 包含目录
target_include_directories(${PROJECT_NAME} PRIVATE
    "${CMAKE_SOURCE_DIR}/include"
    "${CMAKE_SOURCE_DIR}/third_party/agora_rtc_sdk-3.7.0.2/include"
)


# 链接Qt库及第三方库
target_link_libraries(${PROJECT_NAME} PRIVATE
    Qt${QT_VERSION_MAJOR}::Core
    Qt${QT_VERSION_MAJOR}::Gui
    Qt${QT_VERSION_MAJOR}::Widgets
    Qt${QT_VERSION_MAJOR}::PrintSupport
    "${CMAKE_SOURCE_DIR}/third_party/agora_rtc_sdk-3.7.0.2/lib/agora_rtc_sdk.lib"
    
)

# 开启 MOC 调试输出
set(CMAKE_AUTOMOC_VERBOSE ON)