gpt4 book ai didi

Luarocks:从包含多个文件的包中创建一个岩石

转载 作者:行者123 更新时间:2023-12-02 17:29:55 25 4
gpt4 key购买 nike

使用 Luarocks,我遵循了 Creating a 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`` 时,我收到以下错误:

/home/<username>/torch/install/share/lua/5.1/testrock.lua:7: attempt to call global 'require' (a nil value)

所以它提示 require('foo')陈述。有什么建议吗?

最佳答案

module('testrock') 的调用隐藏了所有全局变量,包括全局 require 函数。您可以在调用 module 之前调用 require,或者在调用 之前创建本地别名(local require = require)模块,或者使用package.seeall选项 (module('testrock', package.seeall)).

将 foo 模块添加到您的 rockspec,以便它与您的 testrock.lua 文件一起安装,非常简单:

-- ...
build = {
type = "builtin",
modules = {
testrock = "testrock.lua",
foo = "foo.lua"
}
}
-- ...

关于Luarocks:从包含多个文件的包中创建一个岩石,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34966948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com