c++ vscode 第三方库_使用VSCode和CMake构建跨平台的C/C++开发环境

本文介绍了如何使用VSCode和CMake搭建一个舒适的跨平台C/C++开发环境。通过VSCode的C/C++插件和CMake的配置,可以实现跨平台的编译、构建和运行。文章详细讲解了CMakeLists.txt的编写,包括引入第三方库(如glfw和irrKlang)的方法,以及解决在不同操作系统上的动态库加载问题。此外,还提到了VSCode的任务配置和调试设置,以便高效地进行开发和调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日前在学习制作LearnOpenGL教程的实战项目Breakout游戏时,希望能将这个小游戏开发成跨平台的,支持在多个平台运行。工欲善其事必先利其器,首先需要做的自然是搭建一个舒服的跨平台C/C++开发环境,所以这篇文章主要就是记录环境搭建的整个过程,踩到的一些坑,以及对应的解决办法。

正文开始之前,先来阐述几个问题

为什么选择使用VSCode

实在用不习惯Visual Studio(也可能是用的太少了T▽T)

代码编辑方面更喜欢用轻量级的编辑器,比如Sublime或者VSCode

VSCode确实比较强大好用,插件丰富

为什么使用CMake

通用的编译构建工具,跨平台的关键,一份代码,CMake可以针对不同的系统编译构建生成不同的项目工程

源代码管理,编译更加方便(如果仅仅使用VSCode搭建开发环境,则每添加一个源文件,就要改动一下编译指令)

最终实现的开发流程是怎样的

VSCode编写代码

快捷键Ctrl+Shift+B,调用CMake完成本地项目生成(Mac快捷键Command+Shift+B)

快捷键Ctrl+B,完成项目的编译构建与运行(Mac快捷键Command+B)

快捷键F5,完成项目的调试与运行(VSCode的F5调试运行,为了能够实现调试功能额外做了许多工作,所以启动会有些慢,因此在不需要调试的时候,直接使用Ctrl+B编译运行看效果会更快些)

开发工具

CMake与VSCode

CMake的获取,可以查看CMake官网

VSCode的获取,可以查看VSCode官网

关于CMake与VSCode如何安装,比较简单,网上也有很多教程,这里就不详细介绍了

VSCode插件推荐安装

在VSCode的Extensions面板中搜索下面的插件名即可,记得看清作者名,不要下错啦

插件名

作者

描述

C/C++

Microsoft

提供C/C++的代码提示,跳转,调试等诸多功能,官方出品,基本是C/C++开发必备了

CMake

twxs

提供CMake语法的高亮显示以及代码段提示

示例项目

这里给出例子工程的文件目录情况,并不完整,但具有一定的代表性,不仅涉及源代码的编译,同样包含了静态库,动态库的加载,以及资源文件的读取等问题

Breakout

├── 3rd // 第三方库

│ ├── glfw // 一个静态库目录

│ ├── irrKlang-1.6.0 // 一个动态库目录

│ └── FindIrrKlang.cmake // cmake文件

├── resources // 资源目录

│ ├── textures // 存放贴图文件

│ └── shaders // 存放shader文件

├── src // 源代码目录

│ ├── game // 源代码子目录

│ │ ├── game.h

│ │ └── game.cc

│ └── main.cc

└── CMakeLists.txt // cmake文件

使用CMake

本文仅着重介绍为了完成示例项目开发,解决特定问题而使用的一些cmake语句,详细的cmake介绍可以查看这份还不错的文档或者这篇博文

cmake的所有语句都写在CMakeLists.txt中,cmake会根据该文件中的配置完成最终的编译,构建,打包,测试等一系列任务

一个简单的CMakeLists.txt如下所示,完整的文件可以查看这里

# cmake最低版本号要求

cmake_minimum_required (VERSION 2.8)

# 设置PROJECT_NAME变量

set(PROJECT_NAME Breakout)

# 设置工程名

project (${PROJECT_NAME})

# 查找当前目录下的所有源文件并存入DIR_SRCS变量

aux_source_directory(src DIR_SRCS)

# 添加一个可编译的目标到工程

add_executable (${PROJECT_NAME} ${DIR_SRCS})

如何编译一个文件夹下的所有源代码

在开发过程中,由于架构设计或是为了便于管理与查找,源文件一般会根据不同的功能存放在不同的文件夹中,文件夹中又可能嵌入文件夹,所以需要一条语句能够获取所有的源文件进行编译,而不用每新创建一个源文件,就修改一次编译指令

# 递归列出所有源文件

file (GLOB_RECURSE SOURCE_FILES *.cc)

# 添加一个可编译的目标到工程

add_executable (${PROJECT_NAME} ${SOURCE_FILES})

上面这条file命令会递归列出所有.cc文件,并存入SOURCE_FILES变量,然后将SOURCE_FILES表示的所有.cc文件添加到目标即可,从而解决多源文件编译问题

如何引入一个第三方静态库

为了不重复造轮子,开发中不可避免的要引入其他第三方库。正常情况下,这个第三方库也会是一个CMake工程(或是库的开发者直

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值