фатальная ошибка LNK1107 для цели CMake UNKNOWN IMPORTED - PullRequest
0 голосов
/ 15 апреля 2019

В моем проекте CMake я копирую внешние библиотеки, которые хранятся в специальной папке, в свою выходную папку и импортирую их в качестве ИМПОРТИРОВАННОЙ цели.

Например, для libusb:

find_path(LibUsb_INCLUDE_DIR NAMES libusb.h PATHS ${CMAKE_CURRENT_SOURCE_DIR}/LibUsb/Include)
if(NOT LibUsb_INCLUDE_DIR)
message(FATAL_ERROR "LibUsb: include directory wasn't found")
endif()

find_library(LibUsb_LIBRARY NAMES usb-1.0 libusb-1.0 PATHS ${OUTPUT_BIN_DIR})
if(NOT LibUsb_LIBRARY)
    message(FATAL_ERROR "LibUsb: library wasn't found")
endif()

add_library(LibUsb UNKNOWN IMPORTED GLOBAL)
set_target_properties(LibUsb PROPERTIES IMPORTED_LOCATION ${LibUsb_LIBRARY})
set_target_properties(LibUsb PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${LibUsb_INCLUDE_DIR})

message(STATUS "LibUsb: found at ${LibUsb_LIBRARY}")

Выход CMake:

...
-- Building for: Visual Studio 15 2017
-- The C compiler identification is MSVC 19.0.24234.1
-- The CXX compiler identification is MSVC 19.0.24234.1
...
-- CMAKE SYSTEM: Windows-10.0.17763
-- CMAKE VERSION: 3.13.4
...
-- LibUsb: copy binaries
-- VsCan: copy binaries
-- LibUsb: found at C:/myproj/Build/Windows-Debug/Output/Bin/libusb-1.0.lib
-- VsCan: found at C:/myproj/Build/Windows-Debug/Output/Bin/vs_can_api.lib
...

LibUsb найден правильно, и если я напечатаю LibUsb_LIBRARY, путь будет правильным. В Linux все правильно компилируется.

При компиляции Windows я получаю фатальную ошибку LNK1107: неверный или поврежденный файл .

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...