使用Premake中的"UseLibs"函数与OpenGL sdk时出现错误。

我正在使用 premake 制作使用 OpenGL sdk 中的新项目。我正在尝试组合我的第一个真正的项目,但是当我运行 premake4 vs2010 命令时,出现了错误。我试图使用 UseLibs 函数来获得访问 OpenGL sdk 元素的权限,但是 premake 抛出了一个错误,该错误显示为:

"attempt to call global 'UseLibs' (a nil value)

这是 lua 代码:

solution "OpenGL"
    configurations {"windows", "linux", "Debug", "Release"}
    project "MyProject"
        kind "ConsoleApp"
        language "c++"
        files {"First OpenGL v3\*.cpp", "First OpenGL v3\*.h"}

    UseLibs {"glimage", "glload", "freeglut", "glutil", "glmesh", "glfw", "glm"}

    configuration "windows"
        defines "WIN32"
        links {"glu32", "opengl32", "gdi32", "winmm", "user32"}

    configuration "linux"
        links {"GL"}

    configuration "Debug"
        targetsuffix "D"
        defines "_DEBUG"
        flags "Symbols"

    configuration "Release"
        defines "NDEBUG"
        flags {"OptimizeSpeed", "NoFramePointer", "ExtraWarnings", "NoEditAndContinue"};

这里的许多代码都基于 教程 上所说的方法,所以我不确定为什么会出现这个错误。我在这方面相当新手,所以如果你发现其他问题,请告诉我。谢谢。

原文链接 https://stackoverflow.com/questions/8276949

点赞
stackoverflow用户734069
stackoverflow用户734069

请允许我引用你链接中的内容:

无论主要的premake4.lua文件是否做了所有的工作,你应该做的第一件事情就是执行这个指令:

dofile("path/to/GLSDK/links.lua")

我没有在你的Premake4构建脚本中看到这行代码。

另外,并没有必要同时包含FreeGLUT和GLFW。因为它们做的事情都是一样的,它们创建OpenGL窗口。我是说,你可能可以同时使用它们,但是这似乎是不可能的。

你的程序只使用其中之一。使用哪一个,就将它放在“UseLibs”命令中。

另外:

configurations {"windows", "linux", "Debug", "Release"}

windowslinux不是普通的、用户指定的配置,它们是操作系统配置。你不需要在解决方案的配置列表中列出它们;它们是系统的一部分。在这里列出它们可能会引起问题。

2011-11-26 07:28:27