想跟着Cherno大佬的GameEngine视频手撕一个简单的游戏引擎,算是一边学游戏引擎,一边学c++,一边学opengl,一边补计算机理论基础吧。
首先第一节是项目的环境配置,大佬是在windows中用vs来写的,但我这边得用mac来写,IDE用的是CLion,环境配置起来不能照搬。得手动更改一下CMakeLists之类的。
大佬这里改了Configuration Type,改成生成dll,听起来是想把引擎代码写成一个动态链接库,关于静态链接和动态链接的知识,这里又去恶补了一下。这里在CLion里选择新建一个shared类型的c++的library,它会自动生成一个CMakeLists,这里在源文件的目录下新建一个src文件夹,把代码放到里面,再把add_library处的目标文件前缀加上src目录
然后在CLion的Settings里修改Build生成文件的输出位置,都输出在bin文件夹中。大佬在vs中改的设置中可以修改目标文件和中间文件的生成位置,放到了两个文件夹中,说是中间文件想删的话可以删除,但是CLion里面我还不太清楚是否怎么细分这些文件的输出位置,索性先直接都输出到bin文件夹中。
上述设置更改完成后,点击Build开始对文件进行编译,在windows中是生成了dll文件,一开始以为在mac中会生成so,但实际生成了dylib,查了一下本质上都是动态链接库,应该是操作系统不同导致的。
然后新建一个可执行的工程,修改它的CMakeLists,增加了include和link的目录(这里是新建了include和lib,分别把需要包含的第一个工程的头文件和生成的dylib文件复制到这两个文件夹下),然后增加项目需要链接的动态链接库。
这样就可以在目标工程里引用我们库工程中的函数了。
这里头文件引用的方式和大佬在视频使用的是不一样的,这里直接include了头文件,而大佬是使用__declspec(dllexport)和__declspec(dllimport)的方式,查了一下,这应该是windows中的关键字,使得能够编译生成更好的代码。