Configure_file один раз создает каталог и его подкаталоги, а один раз - нет - PullRequest
1 голос
/ 12 апреля 2019

Я пытаюсь скопировать файлы из одного места назначения в другое, используя configure_file.Я нашел следующее решение Как скопировать каталог из исходного дерева в двоичное дерево? .

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()

1 Ответ

0 голосов
/ 12 апреля 2019

Он копирует файлы рекурсивно (с подкаталогами из srcDir в destDir и основан на Как скопировать каталог из исходного дерева в двоичное дерево? ответ

# 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...