【问题标题】:minko / lua issue : premake5.lua:3: attempt to index global 'minko' (a nil value)minko / lua 问题:premake5.lua:3:尝试索引全局“minko”(零值)
【发布时间】:2015-03-01 23:25:51
【问题描述】:

我正在使用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:奇怪的是,以前“工作”的项目现在也失败了。

谢谢。

【问题讨论】:

    标签: linux lua solution premake minko


    【解决方案1】:
    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 构建系统文件。这就是您收到该错误的原因。

    我认为您复制粘贴的示例/教程之一premake5.lua 文件,而不是修改骨架提供的文件。示例/教程的 premake conf 文件不同,因为它们包含在 SDK premake 文件中。但是您的应用程序premake5.lua 则“相反”:它包含 SDK conf 文件,而不是被它们包含。

    最佳做法是编辑您应用的骨架premake5.lua 副本(而不是从示例/教程中复制/粘贴一个)。

    【讨论】:

    • 非常感谢,这是我的问题。由于骨架项目没有编译,我拿起 minko-tutorial-06-load-3d-files 并从那里开始工作。 (奇怪的是它上周工作了 :-P)由于更改只是一行,我只是修改了骨架 main.cpp 并让它工作,当我想开始一个新项目时总是会使用它。再次,谢谢 :-)
    【解决方案2】:

    (我相信这一行的骨架代码有错误:

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

    script/solution_gmake_gcc.sh 和 script/clean 因此错误而失败:

    minko-master/skel_tut/mycode/premake5.lua:3: 尝试索引全局“minko”(一个 nil 值)

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

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

    【讨论】:

    • 感谢您的快速反馈!这是 premake5.lua 的内容(取自示例): PROJECT_NAME = path.getname(os.getcwd()) minko.project.application("minko-tutorial-" .. PROJECT_NAME) files { "src/** .cpp", "src/**.hpp", "asset/**" } includedirs { "src" } -- 插件 minko.plugin.enable("sdl") minko.plugin.enable("assimp") minko .plugin.enable("jpeg") minko.plugin.enable("bullet") minko.plugin.enable("png") --html 覆盖 minko.plugin.enable("html-overlay") MINKO_HOME 还是一样.您认为 lua 无法找到 MINKO_HOME 从而产生问题?
    • 我需要你项目的 premake5.lua。不是另一个例子中的那个。
    • 是的,这是我的项目使用的,是骨架示例项目之一的灵感但修改版本。 (添加了 assimp、html-overlay、打开 jpeg、子弹...)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 2014-01-26
    • 2019-03-01
    • 1970-01-01
    • 2017-12-20
    相关资源
    最近更新 更多