Configure_file一次创建目录及其子目录,有一次不创建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Configure_file一次创建目录及其子目录,有一次不创建相关的知识,希望对你有一定的参考价值。
我试图通过使用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)
以上是关于Configure_file一次创建目录及其子目录,有一次不创建的主要内容,如果未能解决你的问题,请参考以下文章