Как правильно связать библиотеку (libcurl) в CLion с помощью CMake - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь связать libcurl с простым проектом.
Вот весь исходный код (main.cpp):

#include <bits/stdc++.h>
#include <curl/curl.h>

int main() {
    CURL *curl = curl_easy_init();
    if(curl) {
        std::cout << "Hello, CURL\n";
        curl_easy_cleanup(curl);
    }
    return 0;
}

Все заголовки расположены в C:\Libs\libcurl\include\curl и libcurl.a находится в C:\Libs\libcurl\lib.

My CMakeLists.txt:

cmake_minimum_required(VERSION 3.9)
project(Playground)

set(CMAKE_CXX_STANDARD 17)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")

set(SOURCE_FILES main.cpp)

add_executable(Playground ${SOURCE_FILES})

find_package(Libcurl REQUIRED)
include_directories(${LIBCURL_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} ${LIBCURL_LIBRARY})

И FindLibCurl.cmake (находится в каталоге / cmake):

set(FIND_LIBCURL_PATHS
        C:/Libs/libcurl)

find_path(LIBCURL_INCLUDE_DIR curl/*
        PATH_SUFFIXES include
        PATHS ${FIND_LIBCURL_PATHS})

find_library(LIBCURL_LIBRARY
        NAMES libcurl
        PATH_SUFFIXES lib
        PATHS ${FIND_LIBCURL_PATHS})

КогдаЯ пытаюсь построить проект, я получаю следующую ошибку:

[ 50%] Linking CXX executable Playground.exe
CMakeFiles\Playground.dir\build.make:86: recipe for target 'Playground.exe' failed
CMakeFiles\Playground.dir/objects.a(main.cpp.obj): In function `main':
D:/Clion_projects/Playground/main.cpp:5: undefined reference to `_imp__curl_easy_init'
D:/Clion_projects/Playground/main.cpp:8: undefined reference to `_imp__curl_easy_cleanup'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [Playground.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles/Playground.dir/all] Error 2
CMakeFiles\Makefile2:71: recipe for target 'CMakeFiles/Playground.dir/all' failed
mingw32-make.exe[1]: *** [CMakeFiles/Playground.dir/rule] Error 2
CMakeFiles\Makefile2:83: recipe for target 'CMakeFiles/Playground.dir/rule' failed
mingw32-make.exe: *** [Playground] Error 2
Makefile:117: recipe for target 'Playground' failed

Так что я пропустил?

...