如果已经有一个克隆了 repo 的文件夹,我需要跳过 git 下载,比如ExternalProject_Add
如果你CMakeLists.txt
提供了一个,但不想写一个 custom 。如果将依赖项手动添加到文件夹项目中,基本上只需要完全离线构建项目。download_step
update_step
GIT_TAG
DOWNLOAD_COMMAND
例如:
ExternalProject_Add(civ
SOURCE_DIR ${PROJECT_SOURCE_DIR}/test
BUILD_COMMAND ${MAKE_EXE}
BINARY_DIR "./bin"
INSTALL_COMMAND ""
GIT_REPOSITORY "https://github.com/test/test"
GIT_TAG "v1.0"
LOG_DOWNLOAD on
CMAKE_ARGS
"-DTuberosumTools_DIR=${TUBEROSUMTOOLS_DIR}"
)
test
这样,每次第一次构建项目时都会删除文件夹并再次克隆它(如果我手动删除构建文件夹),我可以在此之后完全离线构建,但确实需要始终离线使用它。已经尝试设置缓存变量,例如:
set(FRESH_DOWNLOAD off CACHE BOOL "download a fresh copy of all dependencies")
include(ExternalProject)
ExternalProject_Add(civ
SOURCE_DIR ${PROJECT_SOURCE_DIR}/test
BUILD_COMMAND ${MAKE_EXE}
BINARY_DIR "./bin"
INSTALL_COMMAND ""
GIT_REPOSITORY "https://github.com/test/test"
GIT_TAG "v1.0"
if(NOT FRESH_DOWNLOAD)
DOWNLOAD_COMMAND ""
endif()
CMAKE_ARGS
"-DTuberosumTools_DIR=${TUBEROSUMTOOLS_DIR}"
)
除非另有说明,否则完全禁用下载,但是对 的if
内部调用ExternalProject_Add()
显然不起作用,并且使用if
外部会引入额外的代码,使其更难维护,而且很难看。
任何简单的替代方案都是有效的,在此先感谢。