Подтвердить что ты не робот

Как я могу объединить несколько списков файлов вместе с 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 (и, возможно, команду list), чтобы объединить два списка GLOB?

4b9b3361

Ответ 1

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

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

Также можно использовать подкоманду list APPEND для объединения списков, например:

file (GLOB files "path/to/files/*")
file (GLOB files2 "path/to/files2*")
list (APPEND files ${files2})

Ответ 2

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

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