2011-11-25 48 views
0

我最近開始學習OpenGL以開始使用C++製作一些圖形應用程序。我已經安裝了OpenGL SDK,並且能夠在其上正確構建項目。然而,在OpenGL SDK網站上,關於如何使用SDK的元素創建新項目(例如freeglut等),幾乎沒有任何信息。我​​有Premake 4.0,我知道我必須對lua文件,但我不知道lua,但不知道如何使用Lua文件創建一個新項目。那麼你能幫我嗎?我使用VS2010,我應該創建項目,然後用premake做些什麼?或者創建一些lua文件,然後使用premake呢?任何幫助都會很棒,因爲我很迷茫,並且很想開始使用OpenGL。我對此做了很多嘗試,例如複製sdk中的lua文件,但沒有運氣。OpenGL SDK如何使用Premake創建新項目

+0

您是否在談論[此SDK?](http://glsdk.sourceforge.net/docs/html/index.html)如果是這樣,它[有關如何將它用於項目的說明,包括Premake和無](http://glsdk.sourceforge.net/docs/html/pg_use。html) –

+0

是的,SDK <然而那裏的說明並沒有提供關於premake文件的許多信息,以及我需要做什麼,以及premake,vs2010和lua文件。 – user1032369

+0

@ user1032369用正確的參數調用premake,然後得到一個'* .sln'文件,通常在名爲'vs2010'的文件夾中(如果爲該系統生成的) – PeterT

回答

4

如果您不熟悉Premake4,那麼我強烈建議您直接使用Visual Studio項目。如果您遇到了問題,請修改您的問題,確切地說是您所做的事情,以及Visual Studio在嘗試構建時給您的錯誤消息。您應該包括:

  • 包含路徑。 完整一組包含路徑,包括完整的絕對目錄名稱(包括項目和解決方案文件的路徑)。
  • 靜態庫搜索路徑。
  • 您正在使用的靜態庫。
  • 您正在構建的定義。

注意:如果您不知道這些是什麼,那麼您需要停下來學習更多關於C++項目的工作方式。您需要了解編譯器如何處理包含路徑,靜態庫,#define語句等


如果你不熟悉Premake4,你仍然要使用Premake4與SDK,那麼你首先必須變成熟悉Premake4 沒有的SDK。我可以給你一個完整的premake4.lua腳本,你可以直接插入,修改幾行代碼,所有東西都會神奇地工作(如果你需要的話,你可以看看SDK的例子是如何構建的,特別是examples/premake4.lua)。但如果我這樣做,你不會學什麼什麼。你只是複製和粘貼代碼,而沒有絲毫理解它是如何工作的。

所以相反,我要告訴你,你應該採取什麼步驟學習如何使用Premake4。

步驟1: Hello World,Premake風格。您應該創建一個Hello World應用程序的單個.cpp文件。它只有一個標準的main功能,可將「Hello World」打印到控制檯。這是很容易的部分。

困難的部分是Premake4腳本。而不是直接創建Visual Studio項目,您將編寫一個Premake4腳本來爲您構建該項目。

Premake4文檔可以引導您完成製作first solution and project的步驟。你當然需要add files to that project。你也應該learn how to use configurations,這樣你可以有一個調試和發佈版本。 Debug版本應該有符號,Release版本應該被優化。

第2步:多個項目。在這裏,您有兩個.cpp文件:test.cppmain.cpp。在test.cpp中,放置一個打印內容的函數。該函數不應該帶參數或任何東西。在main.cpp中,您應具有調用test.cpp中定義的函數的main函數。還應該有一個test.h,它具有test.cpp中定義的功能原型。

這裏的訣竅是你沒有將它們編譯成相同的可執行文件。不直接。您需要兩個項目:一個名爲test,另一個名爲maintest項目應該是一個靜態庫,它編譯test.cppmain項目將是實際的可執行文件,編譯main.cpp。他們都應該在文件列表中包含test.h

在這裏,您正在瞭解解決方案可以有多個project s。這兩個項目有不同的文件列表。每個項目都可以有一個單獨的kind,它決定了該項目的構建類型。 test項目應該是StaticLib,而main項目應該是ConsoleApp

您還需要學習使用links命令將它們鏈接在一起。 main項目應使用links來指定testtest不需要鏈接到某些東西。

步驟3:掌握目錄。

在這裏,你將做與步驟2相同的事情。除了一件事:將test.htest.cpp放在不同的目錄(當前子目錄)中。您還希望該目錄中有一個test.lua文件,您將使用dofile命令從主premake4.lua文件執行該文件。 test.lua是您定義test項目的地方。您可以在使用solution命令創建解決方案後隨時通過test.lua文件致電dofile

請注意,main項目將需要更改它找到的目錄test.h。您還需要使用main項目中的includedirs命令告訴編譯器在main.cpp中包含的搜索test.h標頭的位置。

第4步:返回SDK。此時,您應該熟悉Premake4回顧instructions I pointed you to,並更好地理解它們。然後,按照指示說的去做。當它告訴你腳本的第一行應該是什麼時,把它作爲腳本的第一行。把它放在UseLibs函數的地方,它甚至會給你一個例子。將UseLibs想象爲linksincludedirs的奇特組合。

+0

當我建立時,我不認爲應該有隨機錯誤。我現在真的很累,所以我放棄了晚上。我認爲你已經對我的問題感到厭煩了,所以我不會問你關於我的問題,因爲我知道你可能從我這裏聽到了消息。可能只是把整個冒險做起來,我已經用OpenGL一步一步地跟蹤了每一個單詞,每次我得到一些錯誤,無論我多麼努力地研究,我都找不到廢話。 (這樣你就知道錯誤出現在第2步,這是我從未見過的小錯誤。) – user1032369

+0

@ user1032369:可悲的是,除非你告訴我,否則警隊並沒有給予我足夠的知識去了解你的錯誤。除非你告訴我你真的有什麼問題,否則我無法幫助你。也許你可以把它放在另一個Premake特定的問題中,而不是在這裏發表評論(這不是論壇)。如果你這樣做,請確切地說明你在做什麼,包括所有相關文件,以及在你嘗試構建時到底發生了什麼錯誤。您提供的信息越多,我們就越有可能爲您提供幫助。 –

+0

昨晚我發佈了這條評論,因爲我根本無法獲得第2步的工作,而這是凌晨1:30,所以我不會因爲我的錯誤而成爲奴隸。我現在會用我的問題發佈一個新問題。我知道這不是一個論壇,你是不斷回覆我的評論的人。 – user1032369