如何正确链接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
相关产品推荐
相关产品推荐

