Необходимо использовать библиотеку релизов в отладочной сборке cmake - PullRequest
0 голосов
/ 27 мая 2018

Я сгенерировал библиотеку релизов с использованием CMAKE, которую нужно хранить в проприетарном виде.Я планирую поместить заголовочные файлы в каталог include, а файлы библиотеки - в каталог lib.

Строка CMAKE, используемая для создания библиотеки:

add_library(Ethernet STATIC ${eth_srcs} $<TARGET_OBJECTS:EthernetBootloader>)

Существуют отдельные решения Visual Studio длясоздание библиотеки и запуск панели управления, которая использует библиотеку.Запуск панели управления в режиме отладки работает только с библиотекой отладки.Если панель управления компилируется и работает в режиме отладки, а библиотека была построена в режиме выпуска, я получаю несколько ошибок, которые выглядят следующим образом:

Ethernet.lib(ethernet.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in main.obj
Ethernet.lib(ethernet.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in main.obj

Я начинаю писать файл «ethernet-config.cmake», которыйсодержит:

set(ETHERNET_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/include")
set(ETHERNET_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/lib/Ethernet.lib")
string(STRIP "${ETHERNET_LIBRARIES}" ETHERNET_LIBRARIES)

, а CMakeLists.txt выглядит примерно так:

set(Ethernet_DIR "C:/MotorController/public")
find_package(Ethernet REQUIRED)
include_directories(${ETHERNET_INCLUDE_DIR})
target_link_libraries(ControlPanel ${ETHERNET_LIBRARIES})

Как использовать библиотеку выпусков в 64-разрядном приложении отладки Visual Studio 2015 для Windows 7?Я думаю, что мне нужно адаптировать свой CMakeLists.txt для приложения отладки, но я не понял этого.

...