CMake
CLion会自动在每一个项目的根目录下生成CMakeLists
文件,为了方便添加/移除各种OpenGL框架,我们在项目根目录下建立两个文件夹lib
和include
,所有需要包含的框架头文件均连同其父目录放入include
文件夹,而所有框架提供的库文件则移除其父目录后放入lib
文件夹
此后在CMakeLists
文件中加入
include_directories(include)
link_directories(lib)
将这两个文件夹分别加入包含和链接目录
GLFW
GLFW是一个开源的跨平台库,为OpenGL,OpenGL ES以及Vulkan提供了窗口(比如创建窗口),文本,表面,输入以及事件接收功能的API
在官方网站下载预编译的二进制文件,将压缩包中的include
文件夹与项目根目录中的include
文件夹合并,然后把lib-mingw-w64
文件夹中的文件复制到项目根目录的lib
文件夹中
然后在CMakeLists
文件中加入
target_link_libraries(${PROJECT_NAME} glfw3 opengl32)
以链接GLFW库,这个库文件是动态链接库文件,发布时需要随同发布
GLAD
OpenGL只是一个标准/规范,因此不同开发商针对特定显卡开发的特定驱动(及其不同版本)中提供的接口函数显然无法统一,因此使用OpenGL的程序无法在编译时确定大部分函数的位置,只能在运行时查询。因此开发者需要在程序运行时获取所需使用的函数地址并将其保存在一个函数指针中供之后调用(这一过程称为加载),且获取地址的方法因操作系统平台而异。GLAD通过一个在线服务使得这个过程大大简化,我们只需在GLAD的在线服务上选择使用的语言,OpenGL版本等信息即可生成一个加载了对应版本下全部OpenGL函数的库文件
我们将下载得到的压缩文件中的include
文件夹与项目根目录中的include
文件夹合并,src
文件夹中的glad.c
文件则移动到项目根目录或src
之类用来放工程代码的文件夹(总之就是和项目的main.cpp
丢到一起)
然后在CMakeLists
文件中加入
add_executable(${PROJECT_NAME} main.cpp glad.c)
进行多文件的共同编译