【问题标题】:Install libcurl4-openssl-dev using CMake's External Project使用 CMake 的外部项目安装 libcurl4-openssl-dev
【发布时间】:2015-11-09 04:11:21
【问题描述】:

目前我的一个项目中有这段代码:

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})

该项目的主要优先事项之一是尽可能轻松地为最终用户安装,同时仍然从头开始编译。我在使用这段代码时遇到的一个错误是在运行 CMake 时会生成以下错误:

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)

出现此错误是因为运行 CMake 的系统上未安装 libcurl4-openssl-dev。我想知道如何使用 CMake 安装此依赖项。有什么建议吗?

【问题讨论】:

    标签: curl installation cmake dependencies


    【解决方案1】:

    find_packageREQUIRED 参数表示如果找不到包,CMake 将报告错误并停止。看起来您想要的是在运行 find_package 时允许 curl 包不存在,但在必要时下载它。

    你可能想要更多类似的东西:

    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()
    

    【讨论】:

      猜你喜欢
      • 2014-02-05
      • 1970-01-01
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多