2015-11-08 9 views
5

Zur Zeit habe ich dieses Stück Code in einem meiner Projekte:Installieren libcurl4-openssl-dev mit CMake des externen Projekt

find_package(CURL REQUIRED) 
if(${CURL_FOUND}) 
else(${CURL_FOUND}) 
    message(STATUS "Could not find libcURL. This dependency will be downloaded.") 
    ExternalProject_Add(
     libcurl 
     GIT_REPOSITORY "git://github.com/bagder/curl.git" 
     GIT_TAG "1b6bc02fb926403f04061721f9159e9887202a96" 
     SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/curl 
     PATCH_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/cURL/buildconf 
     CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/cURL/configure --prefix=<INSTALL_DIR> 
     BUILD_COMMAND ${MAKE} 
     UPDATE_COMMAND "" 
     INSTALL_COMMAND "" 
     LOG_DOWNLOAD ON 
     LOG_UPDATE ON 
     LOG_CONFIGURE ON 
     LOG_BUILD ON 
     LOG_TEST ON 
     LOG_INSTALL ON 
    ) 
    ExternalProject_Get_Property(libcurl source_dir) 
    ExternalProject_Get_Property(libcurl binary_dir) 
    set(CURL_SOURCE_DIR ${source_dir}) 
    set(CURL_BINARY_DIR ${binary_dir}) 
    set(CURL_LIBRARIES ${CURL_BINARY_DIR}/lib/.libs/libcurl.dylib) 
    include_directories(${CURL_SOURCE_DIR}) 
    set(DEPENDENCIES ${DEPENDENCIES} libcurl) 
endif(${CURL_FOUND}) 

Eine der wichtigsten Prioritäten des Projekts so einfach wie möglich sein, zu installieren für einen Endbenutzer während des Kompilierens von Grund auf. Ein Fehler Ich laufe in diesem Stück Code ist der folgende Fehler generiert wird, wenn CMake ausgeführt wird:

CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE): 
    Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR) 
Call Stack (most recent call first): 
    /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:288 (_FPHSA_FAILURE_MESSAGE) 
    /usr/share/cmake-2.8/Modules/FindCURL.cmake:52 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) 
    CMakeLists.txt:29 (find_package) 

Dieser Fehler tritt auf, weil libcurl4-openssl-dev nicht auf dem System installiert ist, wo CMake läuft. Ich habe mich gefragt, wie ich diese Abhängigkeit mit CMake installieren könnte. Irgendwelche Vorschläge?

Antwort

2

Das REQUIRED Argument zu find_package bedeutet, dass, wenn das Paket nicht gefunden wird CMake wird einen Fehler melden und zu stoppen. Es sieht so aus, als ob Sie wollen, dass das Curl-Paket nicht vorhanden ist, wenn Sie find_package ausführen, aber wenn nötig, um es herunterzuladen.

Sie wollen wahrscheinlich etwas mehr wie:

find_package(CURL) 

if(NOT ${CURL_FOUND}) 
    message(WARNING "Could not find libcURL. This dependency will be downloaded. To avoid this you can install curl yourself using the standard methods for your platform.") 

    ... 

endif() 
Verwandte Themen