You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 10:55:12