cmake_minimum_required(VERSION 3.16) project(QSmartAssistantSpeechTest) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找Qt6 find_package(Qt6 REQUIRED COMPONENTS Core Widgets Multimedia) # 启用Qt自动moc set(CMAKE_AUTOMOC ON) # 设置sherpa-onnx路径 - 使用项目本地lib目录 set(SHERPA_ONNX_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/lib/sherpa_onnx") set(SHERPA_ONNX_INCLUDE_DIR "${SHERPA_ONNX_ROOT}/include") set(SHERPA_ONNX_LIB_DIR "${SHERPA_ONNX_ROOT}/lib") # sherpa-onnx已经包含了onnxruntime,不需要单独设置 # 包含目录 include_directories(${CMAKE_CURRENT_SOURCE_DIR}) include_directories(${SHERPA_ONNX_INCLUDE_DIR}) # 源文件 set(SOURCES main.cpp SpeechTestMainWindow.cpp ASRManager.cpp TTSManager.cpp ModelSettingsDialog.cpp KWSManager.cpp ) # 头文件 set(HEADERS SpeechTestMainWindow.h ASRManager.h TTSManager.h ModelSettingsDialog.h KWSManager.h ) # 查找sherpa-onnx库文件(只需要C API) find_library(SHERPA_ONNX_C_API_LIB NAMES sherpa-onnx-c-api PATHS ${SHERPA_ONNX_LIB_DIR} NO_DEFAULT_PATH ) # 创建可执行文件 add_executable(qt_speech_simple ${SOURCES} ${HEADERS}) # 链接库 target_link_libraries(qt_speech_simple Qt6::Core Qt6::Widgets Qt6::Multimedia ) # 链接sherpa-onnx库 if(SHERPA_ONNX_C_API_LIB) target_link_libraries(qt_speech_simple ${SHERPA_ONNX_C_API_LIB}) message(STATUS "找到 sherpa-onnx-c-api: ${SHERPA_ONNX_C_API_LIB}") else() message(WARNING "未找到 sherpa-onnx-c-api 库") endif() # 设置rpath(macOS特定) if(APPLE) set_target_properties(qt_speech_simple PROPERTIES INSTALL_RPATH "@loader_path/../lib/sherpa_onnx/lib" BUILD_WITH_INSTALL_RPATH TRUE ) endif() # Linux设置rpath if(UNIX AND NOT APPLE) set_target_properties(qt_speech_simple PROPERTIES INSTALL_RPATH "$ORIGIN/../lib/sherpa_onnx/lib" BUILD_WITH_INSTALL_RPATH TRUE ) endif() # 复制Qt库到输出目录(Windows) if(WIN32) add_custom_command(TARGET qt_speech_simple POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ $) endif() # 注意:程序运行时会自动在项目目录下创建 tts_output 文件夹用于保存合成的音频文件