Cmake 复制文件并修改文件名
最近有研究Cmake语法,由于有时候需要归档一写编译文件,所以研究了Cmake的复制文件并修改文件名的方法。
这里提供的方法是复制的目录和文件名都需要指定,复制到指定目录后自己给文件重新命名即可。
#复制输出文件归档并添加日期
string(TIMESTAMP COMPILE_TIME %Y%m%d_%H%M%S)
set(build_time ${COMPILE_TIME})
#复制输出文件
SET(Debug_bin_FILE
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.bin
)
SET(Release_bin_FILE
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.bin
)
SET(Out_Save_Dir
#这里是要复制到哪个文件夹
${CMAKE_HOME_DIRECTORY}/build/out
)
add_custom_command(
#在build之后执行指令
TARGET ${PROJECT_NAME} POST_BUILD
#使用cmake命令行创建目录,如果目录已经存在不会重复创建
COMMAND ${CMAKE_COMMAND} -E make_directory ${Hex_Save_Dir}
#使用cmake命令行复制输出文件
COMMAND ${CMAKE_COMMAND} -E #echo copy out file
#copy_if_different是文件更新时复制,这里是判断生成的时间
copy_if_different
#当debug中的bin文件或者release中的bin文件更新就会复制到指定目录
"$<$<CONFIG:Release>:${Release_bin_FILE}>"
"$<$<CONFIG:Debug>:${Debug_bin_FILE}>"
"${Out_Save_Dir}/${PROJECT_NAME}-${build_time}.bin"
)