Setting up Curl Library Path in Cmake

Setting up Curl Library Path in Cmake

I downloaded "curl library" for use with a third party application. When I run the included cmake file, I get the following error. Please help me. I appreciate it:

> The C compiler identification is MSVC 18.0.30501.0
    >     The CXX compiler identification is MSVC 18.0.30501.0
    >     Check for working C compiler using: Visual Studio 12 2013
    >     Check for working C compiler using: Visual Studio 12 2013 -- works
    >     Detecting C compiler ABI info
    >     Detecting C compiler ABI info - done
    >     Check for working CXX compiler using: Visual Studio 12 2013
    >     Check for working CXX compiler using: Visual Studio 12 2013 -- works
    >     Detecting CXX compiler ABI info
    >     Detecting CXX compiler ABI info - done
    >     Could NOT find CURL (missing:  CURL_LIBRARY) (found version "7.38.0")
    >     CMake Error at CMakeLists.txt:49 (MESSAGE):
    >       Could not find the CURL library and development files.  
    >     
    >     Configuring incomplete, errors occurred!
    >     See also "C:/BUILD/CMakeFiles/CMakeOutput.log".

I set environment variable for "CURL_LIBRARY" in Windows to point to the location of the installation of library files for curl, but cmake can't still find it even though it indicates that version 7.38.0 was detected on my system.

Thanks for the help..

EDIT: cMakeLists.txt file

  ...
# Look for required libraries
SET(requiredlibs)

FIND_PACKAGE(CURL)
IF(CURL_FOUND)
  INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR})
  SET(requiredlibs ${requiredlibs} ${CURL_LIBRARIES} )
ELSE(CURL_FOUND)
  MESSAGE(FATAL_ERROR "Could not find the CURL library and development files.")
ENDIF(CURL_FOUND)
   ...

I set the include and lib dirs in Windows Environment Variable, but no change.

EDIT: this is complete project file: cmake project.

10

4 Answers

I faced same problem and this SO question was one of top during my search. So I am giving solution that I found. Following cmake worked for me to use libcurl <curl/curl.h> include in my code. Hope it will be usefull for someone.

find_package(CURL REQUIRED) 
add_executable (curl-demo convert.cpp)
include_directories(${CURL_INCLUDE_DIR})
target_link_libraries(curl-demo ${CURL_LIBRARIES})
4

via pkgconfig

include(FindPkgConfig)
pkg_check_modules(CURL libcurl REQUIRED)
include_directories(
  SYSTEM ${CURL_INCLUDE_DIRS}
)
target_link_libraries(YOURTARGETNAME
  ${CURL_LIBRARIES}
)

after having check on web, i've tried several things and one works for me :

CMakeLists.txt :

cmake_minimum_required (VERSION 3.8)

project("CURL-DEMO")

set(CURL_LIBRARY "-lcurl")
set(CURL_INCLUDE_DIR " ${CMAKE_SOURCE_DIR}/PATH_FROM_ROOTproject_TO_CURL-x.x.x/include")
find_package(CURL REQUIRED)

set(HEADERS
"test.h"
)

set(SOURCES
"test.cpp"    
"main.cpp"
)

include_directories(${CURL_INCLUDE_DIR})

add_executable(CURL-DEMO ${HEADERS} ${SOURCES})

if(LIBCURL_ENABLE)
    target_link_libraries(CURL-DEMO CURL::libcurl)
endif()
1

You should install the libcurl-dev pkg with the following cmd first:

$ yum search libcurl

Loading mirror speeds from cached hostfile
============================= N/S Matched: libcurl =============================
libcurl-devel.i686 : Files needed for building applications with libcurl
libcurl-devel.x86_64 : Files needed for building applications with libcurl
curlftpfs.x86_64 : CurlFtpFS is a filesystem for accessing FTP hosts based on
                 : FUSE and libcurl
curlpp.i686 : A C++ wrapper for libcURL
curlpp.x86_64 : A C++ wrapper for libcURL
libcurl.i686 : A library for getting files from web servers
libcurl.x86_64 : A library for getting files from web servers
perl-WWW-Curl.x86_64 : Perl extension interface for libcurl
python-pycurl.x86_64 : A Python interface to libcurl
rubygem-curb.x86_64 : Ruby libcurl bindings

then install the available pkg

sudu yum install libcurl-devel.x86_64
0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Elena Rostova
Author

Elena Rostova

Elena Rostova holds a Master's degree in Public Health Journalism. She covers groundbreaking medical research, holistic wellness trends, mental health awareness, and nutritional science.