Как объединить несколько списков файлов вместе с CMake?

у меня есть проект, построенный с CMake, который должен скопировать некоторые ресурсы в папку назначения. В настоящее время я использую этот код:

file(GLOB files "path/to/files/*")
foreach(file ${files})
    ADD_CUSTOM_COMMAND(
        TARGET MyProject
        POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy "${file}" "${CMAKE_BINARY_DIR}/Debug"
    )
endforeach()

теперь я хочу скопировать больше файлов из другой папки. Поэтому мы хотим скопировать файлы из обоих path/to/files и path/to/files2 в то же место в двоичной папке. Одним из способов было бы просто дублировать вышеуказанный код, но кажется ненужным дублировать длинную пользовательскую команду.

есть ли простой способ использовать file (и, возможно, the list команда также), чтобы объединить два GLOB списки?

2 ответов


на file(GLOB ...) команда позволяет указать несколько подстановка выражений:

file(GLOB files "path/to/files/*" "path/to/files2*")

Я бы построил список для каждого из шаблонов, а затем объединил списки:

file(GLOB files1 "path/to/files1/*")
file(GLOB files2 "path/to/files2/*")
set(files ${files1} ${files2})