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

如何避免CMake安装共享库时同时安装导入库?

Windows下Qt+CMake仅安装共享库运行时文件的解决方案

方法1:通过组件(Component)过滤

给共享库目标分配不同组件,安装时仅选择运行时组件:

  • 配置目标属性,将运行时文件和导入库分别归类:
add_library(${PROJECT_NAME} SHARED ${SOURCES})
# 可选:指定输出目录,让文件结构更清晰
set_target_properties(${PROJECT_NAME} PROPERTIES
    RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
    ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib
)
# 标记运行时文件为Runtime组件,导入库为Development组件
set_target_properties(${PROJECT_NAME} PROPERTIES
    COMPONENT Runtime
    ARCHIVE_COMPONENT_NAME Development
)
  • 安装时仅安装Runtime组件:
install(TARGETS ${PROJECT_NAME}
    COMPONENT Runtime
    DESTINATION ${DeploymentFolder}
)

CMake会自动识别组件归属,只安装.dll运行时文件,跳过.lib导入库。

方法2:直接指定安装目标类型

利用CMake安装指令的目标类型过滤,仅声明RUNTIME类型(对应Windows下的.dll):

install(TARGETS ${PROJECT_NAME}
    RUNTIME DESTINATION ${DeploymentFolder}
    # 省略ARCHIVE类型的安装配置,即可跳过导入库
)

这种方式更简洁,因为SHARED库的ARCHIVE类型对应导入.lib,不声明就不会安装该类型文件。

注意事项

  • 两种方法都无需手动指定文件名,完全依赖CMake的目标机制,适配Qt项目的常规构建流程。
  • 若后续需要为其他项目提供导入库,只需补充ARCHIVE DESTINATION ...的配置即可,扩展性强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:22:34