【问题标题】:cmake: Download easylogging++ and use sources directlycmake:下载easylogging++,直接使用源码
【发布时间】:2018-04-17 04:26:27
【问题描述】:

我想下载easylogging++包,解压后直接在我的源码中使用easylogging++.h和easylogging++.cc。

我从这个开始:

ExternalProject_Add(
        easyloggingpp
        PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/downloads
        URL https://github.com/muflihun/easyloggingpp/archive/v9.96.4.tar.gz
        INSTALL_COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/external/easyloggingpp && cp src/easyloggingpp-9.96.4/src/* ${CMAKE_CURRENT_BINARY_DIR}/external/easyloggingpp/)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/external/easyloggingpp) 
set(easylogging ${CMAKE_CURRENT_BINARY_DIR}/external/easyloggingpp/easylogging++.cc)

..

add_dependencies(myproject easyloggingpp)

这会在我的项目中创建downloads/ 目录,但是它是空的,并且external/ 目录中没有文件出现,甚至没有创建目录本身。

我怎样才能实现下载这个包并直接将它的源与我的源合并?我想实现类似于 bazelnew_http_archive

【问题讨论】:

    标签: url download cmake easylogging++


    【解决方案1】:

    ExternalProject_Add 似乎不适用于我要实现的用例。看起来下载仅在编译步骤期间执行,而不是配置步骤。太可惜了。

    我可以通过手动编码来获得类似的结果,并且效果很好:

    file(MAKE_DIRECTORY downloads external)
    
    ################################################################################
    # Easylogging++
    ################################################################################
    if(EXISTS "external/easyloggingpp")
    else()
    file(MAKE_DIRECTORY external/easyloggingpp)
    file(DOWNLOAD
            https://github.com/muflihun/easyloggingpp/archive/v9.96.4.zip
            downloads/easyloggingpp.zip)
    execute_process(COMMAND unzip downloads/easyloggingpp.zip -d downloads)
    file(GLOB easyloggingpp_files downloads/easyloggingpp-9.96.4/src/easylogging++.*)
    file(COPY ${easyloggingpp_files} DESTINATION external/easyloggingpp)
    endif()
    
    include_directories(external/easyloggingpp)
    set(easyloggingpp external/easyloggingpp/easylogging++.cc)
    

    这对我来说非常有效,而且我非常了解在此过程中发生了什么。很酷的事情是cmake . step 除非必要,否则不会下载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 2017-05-29
      • 1970-01-01
      相关资源
      最近更新 更多