如何用xmake.lua自动复制Lua脚本目录到可执行文件输出目录?
要自动将engine目录下的Lua脚本同步到可执行文件所在的输出目录,你可以通过以下两种方式修改你的xmake.lua配置:
方案一:构建后自动复制整个目录
在target配置中添加after_build回调,完成构建后复制整个engine目录到输出路径:
add_rules("mode.debug", "mode.release") add_requires("lua") target("Elevated") set_kind("binary") add_packages("lua") add_files("src/*.c") -- 构建完成后复制engine目录到可执行文件所在目录 after_build(function(target) local output_dir = target:targetdir() os.cp(path.join(os.projectdir(), "engine"), output_dir) end)
说明
after_build是Xmake提供的构建后钩子,会在目标编译完成后执行自定义逻辑target:targetdir()获取当前可执行文件的输出目录(比如build/debug或build/release)os.cp用来递归复制整个engine目录到输出目录,保持原目录结构不变
方案二:仅复制Lua资源文件
如果只需要复制engine下的Lua脚本,可通过add_files的copy属性标记资源文件:
add_rules("mode.debug", "mode.release") add_requires("lua") target("Elevated") set_kind("binary") add_packages("lua") add_files("src/*.c") -- 将engine下所有lua文件复制到输出目录的engine子文件夹 add_files("engine/**.lua", {copy = "$(targetdir)/engine"})
说明
**是通配符,匹配engine目录下所有子层级的lua文件copy = "$(targetdir)/engine"指定将文件复制到输出目录的engine子目录中,和原项目路径结构一致,你的luaL_dofile(L, "engine/main.lua")代码无需修改
两种方案都能实现自动化复制,你可以根据engine目录下是否有其他资源文件选择合适的方式。
内容的提问来源于stack exchange,提问作者Fedja Blagojevic
相关产品推荐
相关产品推荐

