minko / lua 问题:premake5.lua:3:尝试索引全局 'minko'(零值)

minko / lua issue : premake5.lua:3: attempt to index global 'minko' (a nil value)

我正在使用 minko 并设法为 3 个平台(Linux、Android、HTML5)正确编译 MINKO SDK 并构建所有教程/示例。继续创建我自己的项目,我按照有关如何使用现有骨架项目的说明进行操作,然后使用现有示例项目。

(我认为这一行的框架代码中有错误:

auto sceneManager = SceneManager::create(canvas->context());    //does not compile

示例文件如下所示:

auto sceneManager = SceneManager::create(canvas);   //compile and generate binary

我可以通过修改 premake5.lua(以包含更多插件)并调用 script/solution_gmake_gcc.sh 来做到这一点 一周前生成 make 解决方案。今天,我尝试在新文件夹中创建一个新项目,但调用

script/solution_gmake_gcc.shscript/clean 失败并出现此错误:

minko-master/skel_tut/mycode/premake5.lua:3:尝试索引全局 'minko'(零值)

现在在 premake5.lua 第 3 行有这一行:minko.project.solution(PROJECT_NAME), 然而正弦我根本不熟悉 lua,任何人都可以阐明这个问题吗? 应该在这里声明什么,为什么突然失败了……? (我仍然可以修改、编译和 运行 代码,但我不能添加更多插件)

PS:奇怪的是,之前的'working'项目此时也失败了。

谢谢。

(I believe there is an error in the skeleton code at this line :

这是可能的。我们的构建服务器不测试骨架代码。这是一个错误,我们会尽快修复以确保它正常工作。

script/solution_gmake_gcc.sh and script/clean failed with this error:

minko-master/skel_tut/mycode/premake5.lua:3: attempt to index global 'minko' (a nil value)

你能copy/paste你的premake5.lua文件吗? 另外,您为 MINKO_HOME 环境变量设置的值是多少?也许您已经移动了 SDK...

请注意,除了设置全局 MINKO_HOME 环境变量之外,您还可以在 premake5.lua 文件的开头设置相应的 LUA 常量。

PROJECT_NAME = path.getname(os.getcwd()) 

minko.project.application("minko-tutorial-" .. PROJECT_NAME)

  files { "src/**.cpp", "src/**.hpp", "asset/**" }
  includedirs { "src" }

  -- plugins
  minko.plugin.enable("sdl")
  minko.plugin.enable("assimp")
  minko.plugin.enable("jpeg")
  minko.plugin.enable("bullet")
  minko.plugin.enable("png")
  --html overlay
  minko.plugin.enable("html-overlay") 

假设这确实是您的项目 premake5.lua 文件(下次请告诉我们代码标签),您应该在文件开头有 include "script"

https://github.com/aerys/minko/blob/master/skeleton/premake5.lua#L1

如果你没有这一行,它不会包含 script/premake5.lua,它负责包含定义 minko Lua 中所有内容的 SDK 构建系统文件=32=]。这就是您收到该错误的原因。

我认为您复制粘贴了 examples/tutorials premake5.lua 文件之一,而不是修改框架提供的文件。 examples/tutorials 的 premake conf 文件不同,因为它们包含在 SDK premake 文件中。但是您的应用程序 premake5.lua 执行 "opposite":它包含 SDK 配置文件而不是被它们包含。

最佳做法是编辑您应用的 premake5.lua 骨架副本(而不是 examples/tutorials 中的 copy/pasting)。