Ubuntu搭建OpenGL/C++开发环境
最近做一个跨平台的绘制项目,尝试在Ubuntu上搭建C++的OpenGL开发环境,在这里把一些过程记录一下。
基本C++环境搭建
安装编译工具,build-essential包括gcc,g++,make在内的编译器和工具
1
2sudo apt update
sudo apt install build-essential安装CMake,跨平台构建工程比较方便
1
sudo apt install cmake
创建C++基本工程
创建一个项目路径HelloTriangle,在其之下创建源文件路径src和build路径。在src下创建代码文件main.cpp,写个Hello World1
2
3
4
5
int main(void) {
std::cout << "Hello Triangle" << std::endl;
}在HelloTriangle根目录下创建CMakeLists.txt,为方便补全,可以安装VSCode的CMake插件和CMake Tools插件
CMakeLists.txt填入以下配置内容
1
2
3
4
5cmake_minimum_required(VERSION 3.6)
add_executable(HelloTriangle
src/main.cpp
)此时,项目路径如下图所示
1
2
3
4├── build
├── CMakeLists.txt
└── src
└── main.cpp进入build路径,运行cmake,在build路径下生成Makefile,然后运行make,生成HelloTriangle可执行文件,运行即可
1
2
3
4cd build
cmake ../ # 运行cmake生成Makefile
make # 运行make生成可执行文件
./HelloTriangle # 运行
至此,基本C++环境已经配好,接下来开始配置OpenGL的开发环境。
基本OpenGL开发环境配置
安装GLFW,下载GLFW源码,解压至任意路径,进行构建和安装
1
2
3
4
5
6
7
8
9
10
11视情况apt安装如下工具库,缺的话再补
sudo apt install libglfw3 libglfw3-dev glibc-doc libxmu-dev libxrandr-dev doxygen libsdl2-dev
构建工程 & 安装
cd glfw-3.3.3 && mkdir build && cd build
cmake ../
sudo make
sudo make install
运行simple程序,若绘制出旋转的三角形则安装已完成
./examples/simple查询设备OpenGL版本,以选择合适版本的GLAD库,这里输出的是4.6
1 | glxinfo | grep "OpenGL version" |
- 安装GLAD,用于在运行时动态获取设备的OpenGL接口函数, 进入GLAD生成页面,选取Language、Specification、API - gl、Profile,勾选Generate a loader,然后点击右下角Generate,在新页面中下载glad.zip,解压至任意位置,后续在工程中配置
至此,基本OpenGL开发环境已经配置好,接下来开始配置Hello Triangle的工程代码。
Hello Triangle
将HelloTriangle示例代码贴入之前创建的main.cpp,如果编辑器提示有语法错误先暂时忽略。
修改CMakeLists.txt文件,增加glad.c为源文件,引用glad的include路径,并连接glfw3和OpenGL,完整CMakeLists.txt如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23cmake_minimum_required(VERSION 3.6)
project(HelloTriangle)
add_executable(HelloTriangle
src/main.cpp
/home/summersun/Projects/glad/src/glad.c # 新增源文件
)
include_directories(
/home/summersun/Projects/glad/include # 新增include
)
# 链接glfw
find_package(glfw3 3.3 REQUIRED)
target_link_libraries(HelloTriangle
glfw
${CMAKE_DL_LIBS}
)
# 链接opengl
find_package(OpenGL REQUIRED)
target_link_libraries(HelloTriangle OpenGL::GL)回到HelloTriangle/build路径下,依次构建和编译工程,并运行即可
1
2cmake ../ && make
./HelloTriangle # 运行HelloTriangle
Debugging Tricks
代码补全、语法提示?
在VSCode安装
C/C++
插件以获取此能力VSCode提示
glad/glad.h
头文件未找到,但可以正常编译运行?先在CMakeLists.txt中添加
set(CMAKE_EXPORT_COMPILE_COMMANDS YES)
定义,再次cmake时可以生成compile_commands.json
文件,该文件记录了CMakeLists.txt中定义的头文件然后生成VSCode的配置文件c_cpp_properties.json文件,在其中加入compileCommands选项指向CMake刚生成的配置文件
"compileCommands": "${workspaceFolder}/build/compile_commands.json"
如何调试?
在CMakeLists.txt中添加
set(CMAKE_BUILD_TYPE Debug)
定义,编译时会加入调试flag,在launch.json的program
中设置需要调试的程序位置,F5
即可调试