2.关于编译C++过程
安装c/c++编译插件
编写C++代码,helloword.cpp
-
#include<iostream>
-
#include<stdio.h>
-
using namespace std;
-
int main()
-
{
-
cout<<"hello VS Code"<<endl;
-
return 0;
-
}
3)编写launch.json.(我的理解是调试时调用)
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/hello",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"preLaunchTask": "build",
"linux": {
"MIMode": "gdb"
},
"osx": {
"MIMode": "lldb"
},
"windows": {
"MIMode": "gdb"
}
}
]
}
注意:
"program": "${workspaceRoot}/hello",
这行是要调试的入口,但是呢,我们刚才的cpp是没有编译过的,需要一个task把我们的工程给编译。所以要预编译
"preLaunchTask": "build",
这就是需要taks的功能。
4)编写tasks.json
{
"version": "0.1.0",
"showOutput": "always",
"tasks": [
{
"taskName": "build",
"command": "g++",
"isShellCommand": true,
"showOutput": "always",
"args": ["-g","-o","hello","${workspaceRoot}/helloworld.cpp"]
}
]
}
其中
"taskName": "build",
就是前置task的名字。
那这里我们是一个cpp,那如果我们是一个很大的工程总不能一个个cpp编译吧。
在linux下提供了make功能。
所以这里的task我们采用了makefile来做这件事情。
5)编写makefile文件
CC = gcc
XX = g++
CFLAGS = -Wall -O -g
TARGET = ./hello
#compile all .c and .cpp to .o
%.o:%c
$(CC) $(CFLAGS) -c $< -o $@
%.o:%.cpp
$(XX) $(CFLAGS) -c $< -o $@
SOURCES = $(wildcard *.c *.cpp)
OBJS = $(patsubst %.c,%.o, $(patsubst %.cpp,%.o,$(SOURCES)))
$(TARGET):$(OBJS)
$(XX) $(OBJS) -o $(TARGET)
chmod a+x $(TARGET)
clean:
rm -rf *.o hello
这里通过g++生产最后的可执行文件hello。
回到上面的launch就是执行了这个hello文件。
6)直接按下F5调试即可