В настоящее время у меня есть External_Project_Add_Step, чтобы скопировать каталог из «source dir» в «dest dir». В последнее время я понял, что для этого процесса я копирую около 4 ГБ данных, тогда как на самом деле мне нужно будет копировать отдельные файлы (много файлов, но общий размер ~ 1 ГБ).
ExternalProject_Add_Step(${EXTERNAL_TARGET} lib_step
COMMAND ${CMAKE_COMMAND} -E make_directory ${TGT_DIR}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${SRC_DIR} ${TGT_DIR}
COMMENT "Copying lib from ${SRC_DIR} to ${TGT_DIR}"
DEPENDEES install)
Однако у меня есть список файлов, которые я хочу скопировать. Мне было интересно, могу ли я поместить цикл в External_Project_AddStep, чтобы за один шаг скопировать все необходимые файлы.
Что-то, как показано ниже (хотя это не работает)
ExternalProject_Add_Step(${EXTERNAL_TARGET} lib_step
COMMAND ${CMAKE_COMMAND} -E make_directory ${TGT_DIR}
foreach(copy_file ${ALL_FILES})
file(copy ${SRC_DIR}/${copy_file} ${TGT_DIR})
endforeach(copy_file)
COMMENT "Copying lib from ${SRC_DIR} to ${TGT_DIR}"
DEPENDEES install)
Я полагаю, что вероятным решением может быть сценарий, вызываемый через ExternalProject_Add_Step, который выполняет внутреннее копирование или имеет цикл по ExternalProject_Add_Step с другим именем шага. Не уверен, что лучше / лучше подходит