cmake config_error ai_generated true

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

ID: cmake/imported-location-not-set

Also available as: JSON · Markdown · 中文
95%Fix Rate
90%Confidence
1Evidence
2023-09-20First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
CMake 3.22 active
CMake 3.23 active
CMake 3.24 active

Root Cause

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

generic

中文

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

Official Documentation

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

Workarounds

  1. 95% success add_library(MyPackage::MyLib UNKNOWN IMPORTED) set_target_properties(MyPackage::MyLib PROPERTIES IMPORTED_LOCATION "/usr/local/lib/libmylib.so" )
    add_library(MyPackage::MyLib UNKNOWN IMPORTED)
    set_target_properties(MyPackage::MyLib PROPERTIES
      IMPORTED_LOCATION "/usr/local/lib/libmylib.so"
    )
  2. 90% success # In MyPackageConfig.cmake: add_library(MyPackage::MyLib UNKNOWN IMPORTED) set_target_properties(MyPackage::MyLib PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/lib/libmylib.so" )
    # 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. 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"
    )

Dead Ends

Common approaches that don't work:

  1. 100% fail

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

  2. 95% fail

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