Luarocks:从含多个文件的包中创建 rock
2020-6-20 9:12:55
收藏:0
阅读:77
评论:2
使用Luarocks,我按照Creating a rock上的教程操作。然而,当我的软件包包含多个文件时,我在创建rock时遇到了困难。与教程有何不同?
示例-单文件
假设我有以下文件testrock.lua:
module('testrock')
function add(a, b)
return a+b
end
在testrock-scm-1.rockspec中如下:
package = "testrock"
version = "scm-1"
source = ...
description = ...
dependencies = ...
build = {
type = "builtin",
modules = {
testrock = "testrock.lua"
}
}
然后,我运行luarocks make,它可以成功安装testrock(我可以转到另一个目录并运行require 'testrock')。
示例-两个文件
但是,假设我想添加另一个文件foo.lua:
function testrock.sub(a, b)
return a - b
end
我将以下内容添加到testrock.lua的末尾:
require('foo')
然后运行luarocks make。make运行成功,但是当我转到另一个目录并运行require 'testrock'时,尝试调用全局require的错误发生了:
/home/<username>/torch/install/share/lua/5.1/testrock.lua:7: attempt to call global 'require' (a nil value)
因此,它在关于require('foo')语句发出投诉。有什么建议?
点赞
用户3677376
调用 module('testrock') 隐藏了所有全局变量,包括全局的 require 函数。您可以在调用 module 之前调用 require,或在调用 module 之前创建一个本地别名 (local require = require),或使用 package.seeall 选项 (module('testrock', package.seeall))。
将 foo 模块添加到您的 rockspec 中,以便它与您的 testrock.lua 文件一起安装,非常简单:
-- ...
build = {
type = "builtin",
modules = {
testrock = "testrock.lua",
foo = "foo.lua"
}
}
-- ...
2016-01-23 23:24:18
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
解决方案是意识到我不需要构建任何东西,因为我只使用 .lua 文件。因此,以下 rockspec 可以正常工作:
package = "testrock" version = "scm-1" source = ... description = ... dependencies = ... build = { type = "none", install = { lua = { "testrock.lua", "foo.lua" } } }这将
testrock.lua和foo.lua复制到/home/<username>/torch/install/share/lua/5.1/。