You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确链接Git Submodule中的QHotKey库并避免自动安装

解决QHotKey静态链接且避免被安装的问题

可以通过设置QHotKey自带的CMake选项来实现需求,具体修改你的CMake代码如下:

# 禁用QHotKey的安装流程,避免执行install时把它也装进去
set(QHOTKEY_INSTALL OFF CACHE BOOL "Disable QHotKey installation" FORCE)
# 强制编译静态版本的QHotKey,实现静态链接
set(QHOTKEY_BUILD_STATIC ON CACHE BOOL "Build static QHotKey library" FORCE)

add_subdirectory(QHotkey)
target_link_libraries(${PROJECT_NAME} PRIVATE qhotkey)

说明:

  • QHOTKEY_INSTALL是QHotKey库提供的开关,设为OFF就能跳过它内部的所有install相关配置,不会把库文件、头文件等安装到系统路径里。
  • QHOTKEY_BUILD_STATIC开启后,库会编译成静态库文件,链接到你的项目时就是静态链接,不需要依赖动态库运行。
  • 加上CACHE BOOL ... FORCE是为了确保你的设置能覆盖QHotKey自身的默认配置,避免子项目的CMake脚本重置这些选项。

如果你的项目本身需要编译动态库,担心全局设置影响项目,可以临时修改BUILD_SHARED_LIBS后再恢复:

# 先保存当前项目的BUILD_SHARED_LIBS设置
set(OLD_BUILD_SHARED ${BUILD_SHARED_LIBS})
# 临时设置为OFF,让QHotKey编译静态库
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)

# 禁用QHotKey的安装
set(QHOTKEY_INSTALL OFF CACHE BOOL "" FORCE)
add_subdirectory(QHotkey)

# 恢复原项目的BUILD_SHARED_LIBS设置
set(BUILD_SHARED_LIBS ${OLD_BUILD_SHARED} CACHE BOOL "" FORCE)

target_link_libraries(${PROJECT_NAME} PRIVATE qhotkey)

内容的提问来源于stack exchange,提问作者ManuelSchneid3r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:25:14