Как я могу объединить несколько списков файлов вместе с 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
?
Ответы
Ответ 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})