CMake文件(COPY),无法设置修改时间

时间:2017-01-23 17:47:51

标签: file time cmake copy

我允许每个目标在构建完成后将其所有.exe,.a,.dll等文件复制到目标文件夹:

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不需要任何特殊权限,并且文件未设置为任何只读状态。

什么可能导致此错误,如果我无法阻止它有一种方法来抑制此错误并继续构建,因为文件仍然被复制(没有正确的修改时间,但没关系)。

谢谢。

1 个答案:

答案 0 :(得分:0)

我似乎意外地并行调用了两次BuildMirror,所以我只能假设它失败了,因为第二个BuildMirror覆盖了类似的东西。

很抱歉这个混乱。