【发布时间】: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 不需要任何特殊权限,并且文件未设置为任何只读状态。
什么可能导致此错误,如果我无法阻止它,是否有办法抑制此错误并继续构建,因为无论如何都会复制文件(没有正确的修改时间,但这没关系)。
谢谢。
【问题讨论】: