在网上的资源中,基本都是基于xcode来布macOS下的openGL环境,写一个使用cmake的教程,供大家参考。
1,先安装macOS下的homebrew
https://brew.sh
安装脚本
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
2,安装vscode cmake c++插件等 调式工具
brew cask install visual-studio-code
brew install cmake
3,安装需要的依赖
https://learnopengl-cn.github.iolearnopengl-cn.github.io根据这个openGL学习网站上的内容,安装需要的glfw glad
glfw安装
brew install glfw
在目前的版本macOS 10.15.4中,会下载到路径/usr/local/Cellar/glfw
glad使用在线服务,下载下来glad.zip
https://glad.dav1d.deglad.dav1d.de下载解压后,你可以安装到和glfw同一个层级的目录下/usr/local/Cellar/glad
在已经使用cmake QuickStart创建完后的工程目录中,找到CMakeLists.txt,添加引入glfw 的头文件,lib动态库,还有glad的头文件
假设glfw当前版本是3.3.2
include_directories(/usr/local/Cellar/glfw/3.3.2/include) #添加头文件目径
link_directories(/usr/local/Cellar/glfw/3.3.2/lib) #添加链接库路径
include_directories(/usr/local/Cellar/glad/include) #添加头文件
接下来,把glad解压开后的src/glad.c 复制到工程目录中
CMakeLists.txt 修改 addexecutable(${PROJECT_NAME} main.cpp src/glad.c)
把项目文件和动态库链接起来
target_link_libraries(${PROJECT_NAME} libglfw.dylib)
把入门课程的 创建窗口代码,复制到main.cpp中
你好,窗口 - LearnOpenGL CNlearnopengl-cn.github.io#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
void framebuffer_size_callback(GLFWwindow* window, int width, int height);
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
glViewport(0, 0, 800, 600);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
while(!glfwWindowShouldClose(window))
{
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
glViewport(0, 0, width, height);
}
运行起来,大功告成
anyway, 我还是喜欢使用clion