Я сгенерировал библиотеку релизов с использованием 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 для приложения отладки, но я не понял этого.