Init commit
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# # # # 使用方法: 在某个target编译完后用costom_command来调用此脚本
|
||||
#
|
||||
# add_custom_command(
|
||||
# TARGET ${TG_APP}
|
||||
# POST_BUILD
|
||||
#
|
||||
# COMMAND "${CMAKE_COMMAND}"
|
||||
# "-DSRC_DIR=${PROJECT_SOURCE_DIR}/assets"
|
||||
# "-DDST_DIR=$<TARGET_FILE_DIR:${TG_APP}>/assets"
|
||||
# -P "${PROJECT_SOURCE_DIR}/cmake/copy_assets_to_output.cmake"
|
||||
#
|
||||
# COMMENT "Copying assets..."
|
||||
# VERBATIM
|
||||
# )
|
||||
#
|
||||
# # # # 若希望把 assets 内部的内容直接复制到 exe 目录,不保留最外层 assets,命令改成
|
||||
#
|
||||
# "-DDST_DIR=$<TARGET_FILE_DIR:${TG_APP}>"
|
||||
#
|
||||
# # # #
|
||||
|
||||
if(NOT DEFINED SRC_DIR)
|
||||
message(FATAL_ERROR "SRC_DIR is not defined")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED DST_DIR)
|
||||
message(FATAL_ERROR "DST_DIR is not defined")
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS "${SRC_DIR}")
|
||||
message(FATAL_ERROR "Source directory does not exist: ${SRC_DIR}")
|
||||
endif()
|
||||
|
||||
# 创建目标根目录
|
||||
file(MAKE_DIRECTORY "${DST_DIR}")
|
||||
|
||||
# 获取所有文件和目录。
|
||||
# RELATIVE 确保获得相对于 assets 的路径,以便保留目录结构。
|
||||
file(
|
||||
GLOB_RECURSE entries
|
||||
LIST_DIRECTORIES true
|
||||
RELATIVE "${SRC_DIR}"
|
||||
"${SRC_DIR}/*"
|
||||
)
|
||||
|
||||
foreach(relative_path IN LISTS entries)
|
||||
set(source_path "${SRC_DIR}/${relative_path}")
|
||||
set(target_path "${DST_DIR}/${relative_path}")
|
||||
|
||||
if(IS_DIRECTORY "${source_path}")
|
||||
# 保留目录,包括空目录
|
||||
file(MAKE_DIRECTORY "${target_path}")
|
||||
else()
|
||||
# 确保文件的父目录存在
|
||||
get_filename_component(target_parent "${target_path}" DIRECTORY)
|
||||
file(MAKE_DIRECTORY "${target_parent}")
|
||||
|
||||
# 内容相同时不覆盖
|
||||
file(
|
||||
COPY_FILE
|
||||
"${source_path}"
|
||||
"${target_path}"
|
||||
ONLY_IF_DIFFERENT
|
||||
)
|
||||
endif()
|
||||
endforeach()
|
||||
Reference in New Issue
Block a user