Как использовать внешние библиотеки 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 файл вашей сторонней библиотеки.

повторите для каждой сторонней библиотеки, настройте снова и скомпилируйте.