本身編譯OpenGL項目踩過的坑

  做爲一個有理想的編程者,你確定不想被Visual Studio這種給咱們鋪好路的IDE束縛,你總有一天要徹底從頭開始編程的。踩坑之路就在你的前面了,做爲一個makefile新手,我但願把這些踩過的坑記錄下來,以便爲之後的新手指導如何從坑裏爬出來。html

  一開始咱們必須先學會Visual Studio的方式寫Opengl程序,這裏我不但願再贅述,你能夠參考learnopengl-cn,或者B站傅老師的視頻教程ios

  若是你學會了Visual Studio式OpenGL編程,咱們能夠進行下一步。這是個人代碼:git

 1 #include <iostream>
 2 #include <GLFW/glfw3.h>
 3 
 4 int main(void)  5 {  6     GLFWwindow* window;  7     if (!glfwInit())  8         return -1;  9     window = glfwCreateWindow(1000, 1000, "Hello World", NULL, NULL); 10     if (!window) 11  { 12  glfwTerminate(); 13         return -1; 14  } 15  glfwMakeContextCurrent(window); 16     while (!glfwWindowShouldClose(window)) 17  { 18  glfwSwapBuffers(window); 19  glfwPollEvents(); 20  } 21  glfwTerminate(); 22     return 0; 23 }

若是你成功了,你會獲得一個黑色窗體,標題是hello world ,咱們把代碼複製到一個新的目錄下github

 下面你就能夠開始編譯了編程

這裏我使用的是msys2 - 32bit,關於如何配置msys2,這裏我就不贅述了,資料不少ide

 

 我假設你已經安裝好了gcc make 等開發工具函數

這時候你cd到咱們的文件目錄下,咱們輸入g++ OpenGL.cpp工具

 

固然是不行的學習

這是由於咱們沒有定義相關函數,沒有頭文件,沒有連接庫文件開發工具

頭文件負責聲明函數,而連接庫文件則是函數被定義的地方,關於函數的聲明和函數的定義你能夠參考這篇文章

所以咱們須要提供這兩個東西,一個頭文件,一個庫文件

剛好你在下載glfw的時候就包含了這兩個文件(glfw要下載32位的)

解壓後你會獲得這一堆東西

 

 我們把include下的GLFW文件夾複製到跟咱們的CPP文件同級

而後把lib-mingw文件夾複製到CPP同級

這樣咱們大概能夠獲得這個結果

 

 這裏咱們須要改變如下咱們的g++語句了,在之前的基礎上改爲

g++ OpenGL.cpp -L ./lib-mingw -lglfw3dll -lopengl32

若是你作的都對那麼應該成功編譯沒有報錯,接着你輸入./a.exe就發現打開了一個黑色的窗口,啥都沒有

 

 恭喜你,成功了

來解釋一下咱們加入了什麼,首先是這個-L ./lib-mingw,這個意思就是說個人程序須要到這裏面找連接庫文件,這一步至關於咱們配置visual studio時增長庫目錄

 

 而後這個-lglfw3dll則是至關於咱們修改這裏

 

 你打開lib-mingw文件,就能夠看到這個文件

 

 對應-lglfw3dll是libglfw3dll.a

到這裏我想就結束了,其實關於更多這些知識你均可以經過學習makefile文件來知道,做爲一個有理想的coder,你必須本身從零開始構建全部的世界,道阻且長。

相關文章
相關標籤/搜索