cmake
config_error
ai_generated
true
CMake Error: IMPORTED_LOCATION not set for imported target "MyPackage::MyLib"
ID: cmake/imported-location-not-set
95%Fix Rate
90%Confidence
1Evidence
2023-09-20First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 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.htmlWorkarounds
-
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" )
-
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" )
中文步骤
add_library(MyPackage::MyLib UNKNOWN IMPORTED) set_target_properties(MyPackage::MyLib PROPERTIES IMPORTED_LOCATION "/usr/local/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" )
Dead Ends
Common approaches that don't work:
-
100% fail
CMake requires a non-empty path; an empty string causes the same error or undefined behavior.
-
95% fail
The property name must match exactly; misspelling leads to the same error.