Добавление CURL в cmake проект | VS19 | Windows

Имею следующий код в CMakeLists.txt

cmake_minimum_required (VERSION 3.8)

project ("Halberd")

set(CURL_PATH "E:\\CPP_LIBS\\curl\\Release")


find_library(
    LIB_CURL
    NAMES
        curl
    PATHS 
        ${CURL_PATH}/lib
        ${CURL_PATH}/include
        )

add_executable(
    API
    ${CMAKE_CURRENT_SOURCE_DIR}/Halberd/source/API/API.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/Halberd/source/API/API.h
    )


target_link_libraries(API ${LIB_CURL})

По пути CURL_PATH находится собранная под винду библиотека Curl. Получаю ошибку:
Error

Не понимаю что не так.


Ответы (1 шт):

Автор решения: Maggot

Вам надо использовать модуль CMake под названием - find_package ссылка - https://cmake.org/cmake/help/v3.0/command/find_package.html

пример :

find_package(package_name)

Эта утилита ищет библиотеку и возвращает уже готовые переменные для линковки.

Если библиотека найдена, то будут добавленные переменные типа *_ENABLE по которой Вы сможете определить, что библиотека найдена.

А вообще правила FindXXXX.cmake очень гибкие - Вы можете написать даже свое (если вы поставили библиотеку по кастомному пути)

Вот пример как найти curl

set(CURL_LIBRARY "-lcurl") 

find_package(CURL REQUIRED) 

add_executable (test test.cpp)

if(LIBCURL_ENABLE)
    include_directories(${CURL_INCLUDE_DIR})
    target_link_libraries(test  ${CURL_LIBRARIES})
endif()

т.к. у Вас скорее всего win32 судя по вопросу, стоит добавить еще такой ключик перед началом поиска в find_package

if(WIN32)
    add_definitions("-DCURL_STATICLIB")
endif()

Если Вам интересно посмотреть на сам модуль поиска curl - то вот он на github - https://github.com/Kitware/CMake/blob/master/Modules/FindCURL.cmake

→ Ссылка