【问题标题】:CMake file(COPY), cannot set modification timeCMake 文件(COPY),无法设置修改时间
【发布时间】:2017-01-24 09:24:57
【问题描述】:

我允许每个目标在构建完成后将其所有 .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 不需要任何特殊权限,并且文件未设置为任何只读状态。

什么可能导致此错误,如果我无法阻止它,是否有办法抑制此错误并继续构建,因为无论如何都会复制文件(没有正确的修改时间,但这没关系)。

谢谢。

【问题讨论】:

    标签: file time cmake copy


    【解决方案1】:

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

    很抱歉给您带来了困惑。

    【讨论】:

      猜你喜欢
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 2023-02-23
      • 2016-10-09
      相关资源
      最近更新 更多