2017-01-23 15 views
0

Я разрешаю каждой цели копировать все ее файлы .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 не требует специальных разрешений, и файлы не установлены в состоянии только для чтения.

Что может привести к этой ошибке, и если я не могу предотвратить это, есть способ подавить эту ошибку и продолжить сборку, так как файл копируется в любом случае (без правильного времени изменения, но это нормально).

спасибо.

ответ

0

Кажется, что я случайно дважды вызывал BuildMirror параллельно, поэтому могу только предположить, что он потерпел неудачу, потому что второй BuildMirror был переопределен или что-то подобное.

Извините за путаницу.