我想下载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/目录中没有文件出现,甚至该目录本身也没有创建。
我如何才能实现下载这个软件包,并直接合并它的资源与我的?我想实现类似于bazel's new_http_archive的目标。
发布于 2018-04-22 19:41:19
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 .步骤不会下载。
https://stackoverflow.com/questions/49869926
复制相似问题