作为一个有理想的编程者,你肯定不想被Visual Studio这种给我们铺好路的IDE束缚,你总有一天要完全从头开始编程的。踩坑之路就在你的前面了,作为一个makefile新手,我希望把这些踩过的坑记录下来,以便为以后的新手指导如何从坑里爬出来。

  一开始我们必须先学会Visual Studio的方式写Opengl程序,这里我不希望再赘述,你可以参考learnopengl-cn,或者B站傅老师的视频教程

  如果你学会了Visual Studio式OpenGL编程,我们可以进行下一步。这是我的代码:

 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 ,我们把代码复制到一个新的目录下

 下面你就可以开始编译了

这里我使用的是msys2 - 32bit,关于如何配置msys2,这里我就不赘述了,资料很多

 

 我假设你已经安装好了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,你必须自己从零开始构建所有的世界,道阻且长。

posted on 2019-10-06 17:14  plmls  阅读(1142)  评论(0编辑  收藏  举报