目前我有 External_Project_Add_Step 将目录从“源目录”复制到“目标目录”。最近我意识到我在这个过程中复制了大约 4 GB 的数据,而我实际上需要复制选择性文件(许多文件但总大小约为 1 GB)。
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 进行循环。不确定哪种方法更清洁/更好