gpt4 book ai didi

c++ - Configure_file 一次创建一个目录及其子目录,一次不创建

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:43 25 4
gpt4 key购买 nike

我正在尝试使用 configure_file 将文件从一个目的地复制到另一个目的地。我找到了以下解决方案 How to copy directory from source tree to binary tree? .

function(USR_copy_directory srcDir destDir)
make_directory(${destDir})
file(GLOB_RECURSE files RELATIVE ${srcDir} ${srcDir}/*)
foreach(file ${files})
set(srcFile ${srcDir}/${file})
if(NOT IS_DIRECTORY ${srcFile})
configure_file(${srcFile} ${destDir}/${file} COPYONLY)
endif(NOT IS_DIRECTORY ${srcFile})
endforeach(file)
endfunction()

这个解决方案让我能够完成这项工作。但是当我试图将 for 放在另一个函数中时,它停止创建目录。它只是平面复制文件而不保留结构。基本上这两个代码片段是相同的,只是我删除了 for 循环并将其放在另一个函数中,仅此而已。我究竟做错了什么?

function(USR_copy_directory srcDir destDir)
make_directory(${destDir})
file(GLOB_RECURSE files RELATIVE ${srcDir} ${srcDir}/*)
set(srcFile "")
foreach(file ${files}) #this for loop allows me to append file and path
list(APPEND srcFile "${srcDir}/${file}")
endforeach(file)
USR_copy_files("${srcFile}" ${destDir})
endfunction()


function(USR_copy_files files destDir)
foreach(file ${files})
if(NOT IS_DIRECTORY ${file})
get_filename_component(filename ${file} NAME)
configure_file(${file} ${destDir}/${filename} COPYONLY)
endif(NOT IS_DIRECTORY ${file})
endforeach(file)
endfunction()

最佳答案

它递归地复制文件(子目录从 srcDir 到 destDir,它基于 How to copy directory from source tree to binary tree? 答案

# Copies files from source directory to destination directory, substituting any
# variables. Create destination directory if it does not exist.

macro (configure_files srcDir destDir)
message (STATUS "Configuring directory ${destDir}")
make_directory (${destDir})

file (GLOB templateFiles RELATIVE ${srcDir} "${srcDir}/*")
foreach (templateFile ${templateFiles})
set(srcTemplatePath ${srcDir}/${templateFile})
if (NOT IS_DIRECTORY "${srcTemplatePath}")
message(STATUS "Configuring file ${templateFile}")
configure_file(
"${srcTemplatePath}"
"${destDir}/${templateFile}"
@ONLY)
else (NOT IS_DIRECTORY "${srcTemplatePath}")
configure_files("${srcTemplatePath}" "${destDir}/${templateFile}")
endif (NOT IS_DIRECTORY "${srcTemplatePath}")
endforeach (templateFile ${templateFiles})
endmacro (configure_files srcDir destDir)

关于c++ - Configure_file 一次创建一个目录及其子目录,一次不创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55653410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com