VScode配置C/C++环境
- 安装MinGW
- 安装VScode
- 安装cmake
- 配置环境变量
CMake的方式
工作原理:
- cmake通过读取CMakeLists.txt的内容生成Makefile等文件
- 通过mingw32-make(Windows)或make(Linux)读取Makefile的内容生成.exe文件
同目录单文件
基本步骤:
-
编辑好C/C++的代码之后,新建一个CMakeLists.txt文件,这个文件是编写CMake的关键;
-
按ctrl+shift+p,弹出CMake配置,点击它,让VScode自动帮我们配置好,然后会在工作区自动生成build文件夹
-
编辑CMakeLists.txt文件
-
cmake_minmum_required(VERSION 3.10) #指定最小cmake版本,小于等于本地安装的cmake版本即可 project(Hello C) #指定工程名称,例如:Hello 指定工程开发语言,例如:C #第二个参数可以不加 add_executable(${PROJECT_NAME} Hello.c) #生成可执行文件 PORJECT_NAME是cmake的内置变量表示工程的名字 #这里指定是Hello那生成的可执行文件的名字就是Hello
-
-
进入终端
-
> cd build #进入到build目录中 > cmake .. # 这一行整体表示的是编译CMakeLists.txt文件,生成Makefile # .. 表示的是CMakeLists.txt所在的位置 # 其实通过快捷键ctrl+shift+p配置的就不需要这一步,因为插件已经帮我们做好了 # 就是当我们需要一个新的Makefile文件的时候就需要这一步指令,当然基本上插件已经帮我们做好了 > mingw32-make #执行Makefile里面的内容,生成可执行文件 # 在Windows下下载的MinGW就是这个,如果是Linux就使用自带的make > ./Hello.exe #执行刚刚生成的可执行文件,名字根据实际情况来写
-
-
调试
-
单文件直接点击调试就可以了,什么都不用改
-
如果什么都不改,那VScode会在当前工作区生成一个新的.exe文件,然后对这个.exe文件进行调试工作,不是对我们前面生成的.exe文件进行调试
-
如果不想让VScode重新生成一个.exe文件的话就必须做下列操作
-
把Luanch.json文件中的**“program”**的内容改成
"program":"${workspaceFolder}/build/Hello.exe", //让它指向我们的工程生成的.exe文件
-
把Luanch.json文件中的**“cwd”**的内容改成
"cwd":"${workspaceFolder}", //让它进入到我们的工作空间
-
把Luanch.json文件中的**“preLuachTask”**注释掉,不让它生成新的.exe文件
-
-
同目录多文件
基本步骤:
-
前四步的操作都是一样的,就是在调试的时候有点区别
-
Luanch.json文件就这么改,然后是把**“preLuachTask”**的注释放开
-
打开task.json文件,修改成一下内容:
-
{ "options":{ "cwd":"${workspaceFolder}/build" }, "tasks":[ { "label":"cmake", "command":"cmake", "args":[ ".." ] }, { "label":"make", "command":"mingw32-make", //这个地方要灵活一点,如果是Linux就直接make "args":[ //没有参数,所以这一项可以不写 ] }, { "label":"build", "dependOn":[ //依赖前面两个对象,把他们的label加进来就行 "cmake", "make" ] } ] }
-
-
进入到Luanch.json,找到"preLuanchTask",将其的内容改成"build",对应task.json的tasks的第三个对象的label
-
然后调试就不会报错了
多目录多文件
基本步骤:
-
和前面的是差不多的,只不过说是增加了一些文件夹,方便管理而已
-
新建4个文件夹
- bin 专门放可执行文件的
- obj 专门放.o目标文件的
- include 专门放头文件的
- src 专门放源文件的
-
在对应的文件夹下增加东西,在最外面增加CMakeLists.txt文件
-
树状图
. |--bin |--include |--Student.h |--等头文件 |--obj |--src |--Student.c |--main.c |--等源文件 |--CMakeLists.txt
-
-
编辑CMakeLists.txt文件
-
cmake_minmum_required(VERSION 3.10) #指定最小cmake版本,小于等于本地安装的cmake版本即可 project(Hello C) #指定工程名称,例如:Hello 指定工程开发语言,例如:C #第二个参数可以不加 include_diretory(include) #指定头文件所在目录 aux_source_diretory(src SRCS) add_executable(${PROJECT_NAME} ${SRCS}) #生成可执行文件 PORJECT_NAME是cmake的内置变量表示工程的名字 #这里指定是Hello那生成的可执行文件的名字就是Hello
-
-
按快捷键ctrl+shift+p自动配置cmake,生成build目录
-
Luanch.json和task.json的改法和前面的一样
-
就可以调试了
Makefile的方式
工作原理:
- 编辑好Makefile文件后,通过mingw32-make(windows)或make(Linux)读取Makefile中的内容,使用到gcc等命令生成.exe文件
同目录单文件
基本步骤:
- 写好.c文件,编辑Makefile文件,后面没有什么后缀,当然也可以先写makefile文件然后再写.c文件也是可以的;名字是makefile或是Makefile都是可以的都是一个意思,看个人习惯
main:main.o
gcc main.o -o main
main.o:main.c
gcc -c main.c -o main.o
Makefile的基本格式:
目标:依赖
命令
命令前面一定要是一个tab键
- 进入终端:输入下面指令,就可以生成可执行文件main.exe和目标文件main.o
> mingw32-make
- 直接运行
> ./main.exe
- 单文件调试就不用干啥配置了,调试的工作是Luanch.json和task.json的工作和Makefile本身无关,除非要针对我们自己生成的.exe文件调试,编译的时候加-g选项即可,自己看着改
同目录多文件
基本步骤:
-
编写.h和.c文件,然后编写makefile文件
-
makefile文件
-
main:main.o student.o gcc main.o student.o -o main main.o:main.c gcc -c main.c -o main.o student.o:student.c gcc -c student.c -o student.o
-
# 简写上面的makefile文件 main: main.o student.o gcc $^ -o $@ %.o:%.c gcc -c $< -o $@
-
-
后续运行等步骤是一样的,想要调试就在makefile中的编译命令加-g选项
-
main: main.o student.o gcc $^ -o $@ %.o:%.c gcc -c -g $< -o $@
-
多目录多文件
基本步骤:
-
新建文件夹
- bin
- obj
- src
- include
-
新建makefile文件
-
树状图
. |--bin |--include |--student.h |--obj |--src |--main.c |--student.c |--makefile
-
-
编辑文件
-
个个头文件和源文件
-
makefile
BIN=./bin OBJ=./obj SRC=./src INC=./include SRCS=$(wildcard $(SRC)/*.c) OBJS=$(patsubst %.c,$(OBJ)/%.o,$(nordir $(SRCS))) CC=gcc CFLAGS=-g -Wall -I$(INC) $(BIN)/main:$(OBJS) $(CC) $^ -o $@ $(OBJ)/%.o:$(SRC)/%.c $(CC) $(CFLAGS) -c $< -o $@ .PHONY:clean clean: del /Q /F obj
-
结合视频观看效果更佳:
VSCode配置C和C++的环境的两种基本方式