我们的项目由多个(共享) git存储库组成。目前,我们正在使用在CMake构建之前执行的shell脚本来克隆git存储库。
我想摆脱shell脚本,并在cmake中执行所有步骤。
现在我找到了ExternalProject和FetchContent
我从ExternalProject_Add开始
function(CloneRepository repositoryURL branchName projectName sourceDir)
ExternalProject_Add(
"${projectName}"
GIT_REPOSITORY "${repositoryURL}"
SOURCE_DIR "${sourceDir}"
GIT_TAG "origin/${branchName}"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
endfunction(CloneRepository)
但是,正如引用中所述,这是在构建时执行的,而不是在配置时执行的。我希望在配置时进行克隆(只需克隆,不构建)
就在那时我找到了FetchContent
function(TestoCloneRepository repositoryURL branchName projectName sourceDir)
message("Starting to clone ${projectName} into ${sourceDir}")
FetchContent_Declare(
"${projectName}"
GIT_REPOSITORY "${repositoryURL}"
SOURCE_DIR "${sourceDir}"
GIT_TAG "origin/${branchName}"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
)
FetchContent_MakeAvailable(${projectName})
endfunction(TestoCloneRepository)
现在,这个函数的内容是相同的,但是ExternalProject_Add添加了存储库,但是FetchContent在配置时失败了,控制台输出中没有给出原因。
以下是我的问题:
也是空的
。
发布于 2021-11-11 08:45:53
我做了些测试。看起来这是一个与VS 2022相关的问题。
当从VS代码或CMake GUI (3.21)配置我的项目时,没有错误。我要退房的相当大。我猜VS 2022在某种程度上处于超时状态。我会发布一个微软的bug报告。
https://stackoverflow.com/questions/69916239
复制相似问题