zoukankan      html  css  js  c++  java
  • 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)。
  • 相关阅读:
    Delphi的 Format格式化函数
    Delphi的Trim函数
    Delphi容器类之---Tlist,TStringlist,THashedStringlist的效率比较
    Delphi容器类之---TOrderedList、TStack、TQueue、TObjectStack、TObjectQueue
    Delphi容器类之---TList、TObjectList、TComponentList、TClassList
    Delphi的分配及释放---New/Dispose, GetMem/FreeMem及其它函数的区别与相同
    Delphi容器类之---TList、TStringList、TObjectList,以及一个例程的代码分析
    Linux C编程学习6---字符串处理、数据转换
    Linux C编程学习之开发工具3---多文件项目管理、Makefile、一个通用的Makefile
    Linux C编程学习之开发工具2---GDB调试器
  • 原文地址:https://www.cnblogs.com/RobertL/p/14257514.html
Copyright © 2011-2022 走看看