• lua 独立运行 standalone


    1. 可以为lua.exe创建快捷方式
    2. 快捷方式的文件属性中在目标(...lua.exe)后附加参数。
    3. 路径、参数:
      • 需要脚本文档文件的路径
      • 可以使用绝对路径或相对路径。
      • 相对路径基于、相对于属性中的起始位置
      • 起始位置即工作目录。
      • 工作目录默认会被作为查找(package)的路径(pacage.path)之一。
      • 脚本中(require)引用的其他文件(包)。建议保持相对位置关系。
      • 可以启用选项(参数)ienters interactive mode after running script; ,保持窗口可见,接收(print)输出。
      • 参见Lua文档7 – Lua Standalone。

    或:

    1. 在以上快捷方式中不填写路径(填写选项工作目录)。
    2. 将文档拖放至快捷方式图标(相对于命令行中将文件路径附加到参数后并执行)。

    或:

    • 复制链接(而非快捷方式)解释器(lua.exe)到脚本所在文件夹。
      • 进而无需指定工作目录(但也无法指定参数,需要以其为建立快捷方式)。

    或:

    • 关联文件类型为解释器(lua.exe)打开,但需要在脚本内指定工作目录(使用lfs库)。

    或:(当前方案)

    • 建立脚本,更改为自定义类型(如.luae),关联解释器。
    • 脚本作为启动入口,重命名为目标(Lua)文件一样,并放置在一起(目录)。
      • 启动脚本的内容一致,可以复制,或使用硬链接(不可使用符号连接,其路径仍为原文件)
    • 执行此(启动)脚本,自动设置包路径,(dofile)执行目标脚本。
    • 如:
    --print(arg[-1],arg[0],arg[1])
    local workingDirectory,fileName=string.match(arg[0],'^(.-)([^\/]+)%..-$')
    package.path=package.path..';'..workingDirectory..'?.lua'
        --..[[other path]]
    package.cpath=package.cpath..';'..workingDirectory
    dofile(workingDirectory..fileName..'.lua')

    或者使用 os.execute 以传递其他选项。

    assert(os.execute(
    --print((
            arg[-1]
            ..' -i '
            ..' -e "package.path=package.path..[[;'..workingDirectory..'?.lua]]" '
            ..' -e "package.cpath=package.cpath..[[;'..workingDirectory..']]" '
            ..workingDirectory..fileName..'.lua'
    ))

    其他:

    • If there is no script in the call, the interpreter name goes to index 0
      • 可以通过参数-e "print(arg[0])"查看。
    • string.match(arg[0],'([^\/]+)%..-$') 提取文件名(不含后缀)。
    • by calling  os.exit  to terminate
    • 未能获知快捷方式的名字。
    • 可以建立指向快捷方式链接,但系统无法运行,报错(该版本的 ..lua53.exe - 快捷方式 - 符号连接.exe 与你运行的 Windows 版本不兼容。请查看计算机的系统信息,然后联系软件发布者。)。
    • 设置工作目录是用于 package.path/cpath ,可以手动设置。
    • 指定 package.path 需包含文件后缀(如.lua)(指定 package.cpath 无需指定.dll)。
  • 相关阅读:
    Java项目(非Web)整合lombok+slf4j1.7.x+log4j 2.x日志框架同时输出到文件和控制台
    2022年面试准备
    前端做微信支付(vue)
    手机端的宽度
    Kubernetes平台上更安全的构建容器镜像工具Kaniko
    软件开发方法论12 factors
    Mysql 优化记录
    微信端浏览器有两个相同名的cookie在shiro引发无法认证问题
    若依系统富文本编辑框内容保存到后台样式被过滤问题
    ts中的void和never类型
  • 原文地址:https://www.cnblogs.com/RobertL/p/14257514.html
Copyright © 2020-2023  润新知