cmake config_error ai_generated true

CMake 错误:未为导入目标 "MyPackage::MyLib" 设置 IMPORTED_LOCATION

CMake Error: IMPORTED_LOCATION not set for imported target "MyPackage::MyLib"

ID: cmake/imported-location-not-set

其他格式: JSON · Markdown 中文 · English
95%修复率
90%置信度
1证据数
2023-09-20首次发现

版本兼容性

版本状态引入弃用备注
CMake 3.22 active
CMake 3.23 active
CMake 3.24 active

根因分析

通过 add_library(MyPackage::MyLib UNKNOWN IMPORTED) 或类似方式创建的导入目标缺少 IMPORTED_LOCATION 属性,而该属性是链接所必需的。

English

An imported target created via add_library(MyPackage::MyLib UNKNOWN IMPORTED) or similar lacks the IMPORTED_LOCATION property, which is required for linking.

generic

官方文档

https://cmake.org/cmake/help/latest/prop_tgt/IMPORTED_LOCATION.html

解决方案

  1. add_library(MyPackage::MyLib UNKNOWN IMPORTED)
    set_target_properties(MyPackage::MyLib PROPERTIES
      IMPORTED_LOCATION "/usr/local/lib/libmylib.so"
    )
  2. # In MyPackageConfig.cmake:
    add_library(MyPackage::MyLib UNKNOWN IMPORTED)
    set_target_properties(MyPackage::MyLib PROPERTIES
      IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/lib/libmylib.so"
    )

无效尝试

常见但无效的做法:

  1. 100% 失败

    CMake requires a non-empty path; an empty string causes the same error or undefined behavior.

  2. 95% 失败

    The property name must match exactly; misspelling leads to the same error.