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

如何通过CMake获取共享库SHARED_LIBRARY的.lib文件路径

Windows下CMake获取共享库导入库(.lib)的完整路径

直接获取完整路径(推荐)

使用CMake生成表达式$<TARGET_LINKER_FILE:SHARED_LIBRARY>,它会直接返回共享库对应的导入库(.lib)的完整路径,自动适配当前构建类型(Debug/Release)的子目录结构:

# 示例:将路径存入变量
set(SHARED_LIB_IMPLIB_PATH $<TARGET_LINKER_FILE:SHARED_LIBRARY>)

手动拼接路径(备用)

如果需要手动组合路径,可按以下步骤操作:

  1. 获取导入库的文件名
    get_target_property(IMPLIB_FILENAME SHARED_LIBRARY TARGET_LINKER_FILE_NAME)
    
  2. 获取库的基础输出目录
    get_target_property(LIB_BASE_DIR SHARED_LIBRARY LIBRARY_OUTPUT_DIRECTORY)
    
  3. 结合构建类型拼接完整路径
    • 单配置生成器(如Makefiles):
      set(FULL_IMPLIB_PATH "${LIB_BASE_DIR}/${CMAKE_BUILD_TYPE}/${IMPLIB_FILENAME}")
      
    • 多配置生成器(如Visual Studio),用生成表达式适配不同配置:
      set(FULL_IMPLIB_PATH "${LIB_BASE_DIR}/$<CONFIG>/${IMPLIB_FILENAME}")
      

关键说明

  • Windows平台下,SHARED库的.dll是运行时文件,.lib是链接时依赖的导入库。CMake中$<TARGET_FILE:>指向.dll,$<TARGET_LINKER_FILE:>指向.lib。
  • ARCHIVE_OUTPUT_DIRECTORY是静态库的输出目录,不适用于共享库的导入库,因此你之前获取到空值是正常现象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:45:03