2017-01-23 101 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覆蓋了或類似的東西。

對不起,我感到困惑。