Как использовать внешние библиотеки DLL в проекте CMake
Я искал через интернет, но я не мог найти ничего, что ответило бы на мой вопрос (или я не знаю, что искать).
в любом случае вот мой вопрос: Я хочу использовать библиотеки 3rdParty (.dll-файлы) в моем проекте CMake. Библиотека (https://github.com/pitzer/SiftGPU), который я хочу включить, является открытым исходным кодом, а также доступен в двоичном формате, который я хотел бы использовать, а также использует CMake в качестве инструмента сборки, если это актуально.
надеюсь, я был достаточно ясно.
1 ответов
сначала отредактируйте CMakeLists.txt, чтобы включить вашу стороннюю библиотеку. Вам понадобится две вещи: путь к файлам заголовков и файл библиотеки для ссылки. Например:
# searching for include directory
find_path(SIFTGPU_INCLUDE_DIR siftgpu.h)
# searching for library file
find_library(SIFTGPU_LIBRARY siftgpu)
if (SIFTGPU_INCLUDE_DIR AND SIFTGPU_LIBRARY)
# you may need that if further action in your CMakeLists.txt depends
# on detecting your library
set(SIFTGPU_FOUND TRUE)
# you may need that if you want to conditionally compile some parts
# of your code depending on library availability
add_definitions(-DHAVE_LIBSIFTGPU=1)
# those two, you really need
include_directories(${SIFTGPU_INCLUDE_DIR})
set(YOUR_LIBRARIES ${YOUR_LIBRARIES} ${SIFTGPU_LIBRARY})
endif ()
Далее, вы можете сделать то же самое для других библиотек и, когда все библиотеки будут обнаружены, ссылка на объект:
target_link_libraries(yourtarget ${YOUR_LIBRARIES})
затем вы можете настроить свой проект с помощью CMake, но поскольку у него нет волшебного способа найти установленную библиотеку, он ничего не найдет, но создаст два кэша переменные: SIFTGPU_INCLUDE_DIR
и SIFTGPU_LIBRARY
.
используйте CMake GUI, чтобы иметь SIFTGPU_INCLUDE_DIR
указывая на каталог, содержащий заголовочные файлы и SIFTGPU_LIBRARY
до .lib
файл вашей сторонней библиотеки.
повторите для каждой сторонней библиотеки, настройте снова и скомпилируйте.