Cmake release编译项目时报错,IMPORTED_IMPLIB not set for imported target "" configuration "Release".
Debug 模式却能正常编译,百思不得其解。
查看模块 xxx.cmake 预定义文件后,发现了问题,缺少在release模式下的相关定义,自己做包的时候漏掉了。
set(EXPORT_LIB_NAME aes:aes)
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
if (_IMPORT_PREFIX STREQUAL "/")
set(_IMPORT_PREFIX "")
endif ()
add_library(${EXPORT_LIB_NAME} SHARED IMPORTED)
set_target_properties(${EXPORT_LIB_NAME} PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
)
set(aes_ROOR_DIR ${_IMPORT_PREFIX})
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
set_target_properties(${EXPORT_LIB_NAME} PROPERTIES IMPORTED_IMPLIB_DEBUG "${_IMPORT_PREFIX}/lib/aes.lib")
set_target_properties(${EXPORT_LIB_NAME} PROPERTIES IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/bin/aes.dll")
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
set_target_properties(${EXPORT_LIB_NAME} PROPERTIES IMPORTED_IMPLIB_DEBUG "${_IMPORT_PREFIX}/lib/aes_64.lib")
set_target_properties(${EXPORT_LIB_NAME} PROPERTIES IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/bin/aes_64.dll")
endif()
添加如下定义即可
set_target_properties(${EXPORT_LIB_NAME} PROPERTIES IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/lib/aes.lib")
set_target_properties(${EXPORT_LIB_NAME} PROPERTIES IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/bin/aes.dll")