Я разрешаю каждой цели копировать все ее файлы .exe, .a, .dll и т. Д. В папку назначения после завершения сборки как таковой:Файл CMake (COPY), не может установить время модификации
function(BuildMirror TARGET DESTINATION)
# Check if folder exists
if (NOT EXISTS "${DESTINATION}")
message(WARNING "Destination folder did not exist, created: ${DESTINATION}")
file(MAKE_DIRECTORY "${DESTINATION}")
endif()
# Copy output
add_custom_command(
TARGET ${TARGET}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -DDESTINATION="${DESTINATION}" -P "${BUILDCHAIN_CMAKE}/PostBuildMerge.cmake"
)
endfunction(BuildMirror)
Где PostBuildMerge.cmake определяется как таковую:
# Search
file(GLOB FILES
"${CMAKE_BINARY_DIR}/*.a"
"${CMAKE_BINARY_DIR}/*.dll"
"${CMAKE_BINARY_DIR}/*.lib"
"${CMAKE_BINARY_DIR}/*.exe"
)
# Copy
file(COPY ${FILES} DESTINATION "${DESTINATION}")
Который, кажется, работает очень хорошо для большинства проектов, однако (я не могу показаться, чтобы выяснить, почему) один проект не полностью завершить копия (Файл скопирован) со следующим сообщением:
file COPY cannot set modification time on
"xxx/Lib/Vulkan/libVkLayer_parameter_validation.dll"
Насколько я могу видеть, CMake не требует специальных разрешений, и файлы не установлены в состоянии только для чтения.
Что может привести к этой ошибке, и если я не могу предотвратить это, есть способ подавить эту ошибку и продолжить сборку, так как файл копируется в любом случае (без правильного времени изменения, но это нормально).
спасибо.