impress_voice_input/cmake/dependencies.cmake
impressionyang 68b512d5cd fix: 修复 Windows Qt 5.12 MinGW 多个编译/链接问题
1. onHotkeyEvent 多重定义: 头文件声明加 #ifdef Q_OS_WIN 保护
   MOC 会扫描头文件生成桩函数,与 cpp 中 #ifdef 实现冲突

2. PortAudio 链接失败: 平台分离库路径,Windows 查找 lib/win64 子目录
   原 libportaudio.a 是 Linux 编译的归档,不适用于 MinGW

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-13 18:08:26 +08:00

79 lines
2.6 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

include(FetchContent)
set(THIRD_PARTY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party")
# ----------------------------------------------------------------------------
# ONNX Runtime
# ----------------------------------------------------------------------------
set(ONNXRUNTIME_ROOT "${THIRD_PARTY_DIR}/onnxruntime")
find_library(ONNXRUNTIME_LIB
NAMES onnxruntime
PATHS "${ONNXRUNTIME_ROOT}/lib"
NO_DEFAULT_PATH
)
find_path(ONNXRUNTIME_INCLUDE_DIR
NAMES onnxruntime_cxx_api.h
PATHS "${ONNXRUNTIME_ROOT}/include"
NO_DEFAULT_PATH
)
if(ONNXRUNTIME_LIB AND ONNXRUNTIME_INCLUDE_DIR)
set(ONNXRUNTIME_LIBRARIES ${ONNXRUNTIME_LIB})
set(ONNXRUNTIME_INCLUDE_DIRS ${ONNXRUNTIME_INCLUDE_DIR})
message(STATUS "找到 ONNX Runtime: ${ONNXRUNTIME_LIB}")
add_compile_definitions(HAVE_ONNXRUNTIME)
else()
message(WARNING "未找到 ONNX Runtime推理功能将使用占位实现")
endif()
# ----------------------------------------------------------------------------
# PortAudio
# ----------------------------------------------------------------------------
set(PORTAUDIO_ROOT "${THIRD_PARTY_DIR}/portaudio")
# Windows 需要 MinGW 编译的版本,与 Linux 分开存放
if(WIN32)
set(PORTAUDIO_LIB_PATH "${PORTAUDIO_ROOT}/lib/win64")
elseif(APPLE)
set(PORTAUDIO_LIB_PATH "${PORTAUDIO_ROOT}/lib/macos")
else()
set(PORTAUDIO_LIB_PATH "${PORTAUDIO_ROOT}/lib")
endif()
find_library(PORTAUDIO_LIB
NAMES portaudio libportaudio
PATHS "${PORTAUDIO_LIB_PATH}"
NO_DEFAULT_PATH
)
find_path(PORTAUDIO_INCLUDE_DIR
NAMES portaudio.h
PATHS "${PORTAUDIO_ROOT}/include"
NO_DEFAULT_PATH
)
if(PORTAUDIO_LIB AND PORTAUDIO_INCLUDE_DIR)
set(PORTAUDIO_LIBRARIES ${PORTAUDIO_LIB})
set(PORTAUDIO_INCLUDE_DIRS ${PORTAUDIO_INCLUDE_DIR})
message(STATUS "找到 PortAudio: ${PORTAUDIO_LIB}")
add_compile_definitions(HAVE_PORTAUDIO)
else()
message(WARNING "未找到 PortAudio音频采集功能将使用占位实现")
endif()
# ----------------------------------------------------------------------------
# dr_libs (header-only)
# ----------------------------------------------------------------------------
set(DR_LIBS_INCLUDE_DIR "${THIRD_PARTY_DIR}/dr_libs")
if(EXISTS "${DR_LIBS_INCLUDE_DIR}/dr_wav.h")
message(STATUS "找到 dr_libs: ${DR_LIBS_INCLUDE_DIR}")
add_compile_definitions(HAVE_DR_LIBS)
else()
message(WARNING "未找到 dr_libs 头文件")
endif()
# ----------------------------------------------------------------------------
# nlohmann/json (header-only)
# ----------------------------------------------------------------------------
set(NLOHMANN_JSON_INCLUDE_DIR "${THIRD_PARTY_DIR}/nlohmann_json")