Luarocks:从包含多个文件的包创建rock

Luarocks:从包含多个文件的包创建rock,lua,package,luarocks,Lua,Package,Luarocks,使用Luarock,我已经完成了上的教程。但是,我很难创建一个包含多个文件的岩石包。当我的软件包分布在多个文件中时,与本教程有什么不同 示例-一个文件 假设我有以下文件testrock.lua: module('testrock') function add(a, b) return a+b end function testrock.sub(a, b) return a - b end require('foo') 在testrock-scm-1.rockspec pac

使用Luarock,我已经完成了上的教程。但是,我很难创建一个包含多个文件的岩石包。当我的软件包分布在多个文件中时,与本教程有什么不同

示例-一个文件 假设我有以下文件
testrock.lua

module('testrock')
function add(a, b)
    return a+b
end
function testrock.sub(a, b)
    return a - b
end
require('foo')
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

module('testrock')
function add(a, b)
    return a+b
end
function testrock.sub(a, b)
    return a - b
end
require('foo')
我在testrock.lua的末尾添加了以下内容:

module('testrock')
function add(a, b)
    return a+b
end
function testrock.sub(a, b)
    return a - b
end
require('foo')
然后运行
luarocks make
make
可以工作,但是当我转到另一个目录并运行'require'testrock``时,我得到以下错误:

/home//torch/install/share/lua/5.1/testrock.lua:7:尝试调用全局“require”(一个空值)


所以它抱怨
require('foo')
语句。有什么建议吗?

随附的解决方案意识到我不需要构建任何东西,因为我只使用.lua文件。因此,以下rockspec适用:

package = "testrock"
version = "scm-1"

source = ...
description = ...
dependencies = ...

build = {
   type = "none",
   install = {
       lua = {
           "testrock.lua",
           "foo.lua"
       }
   }
}

这将
testrock.lua
foo.lua
复制到
/home//torch/install/share/lua/5.1/
解决方案实现了我不需要构建任何东西,因为我只使用.lua文件。因此,以下rockspec适用:

package = "testrock"
version = "scm-1"

source = ...
description = ...
dependencies = ...

build = {
   type = "none",
   install = {
       lua = {
           "testrock.lua",
           "foo.lua"
       }
   }
}
这将
testrock.lua
foo.lua
复制到
/home//torch/install/share/lua/5.1/
模块('testrock')
的调用隐藏所有全局变量,包括全局
require
函数。您可以在调用
module
之前调用
require
,或者在调用
module
之前创建本地别名(
local require=require
),或者使用选项(
module('testrock',package.seeall)

将foo模块添加到rockspec中,以便与
testrock.lua
文件一起安装,这很简单:

-- ...
build = {
   type = "builtin",
   modules = {
       testrock = "testrock.lua",
       foo = "foo.lua"
   }
}
-- ...
调用
模块('testrock')
隐藏所有全局变量,包括全局
require
函数。您可以在调用
module
之前调用
require
,或者在调用
module
之前创建本地别名(
local require=require
),或者使用选项(
module('testrock',package.seeall)

将foo模块添加到rockspec中,以便与
testrock.lua
文件一起安装,这很简单:

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