c. 如果第一个target的文件不存在,或其依赖的.o 文件修改时间要比target这个文件新,则会执行紧接着的command来生成这个target文件;
d. 如果第一个target所依赖的.o文件不存在,则会在makefile文件中找target为.o的依赖,如果找到则执行command,.o的依赖必是.h或.cpp,于是make可以生成 .o 文件了
e. 回溯到b步执行最终目标
看一下执行结果
[xxx@xxx ~]$ make
g++ -g -c hw2.cpp
g++ -g -c solution.cpp
g++ -o build hw2.o solution.o #注意前面必须是tab,不能是空格
[xxx@xxx ~]$ ./build
HI!
[xxx@xxx ~]$
由于makefile文件中加了-g这一选项,于是可以通过gdb进行调试,并且会命中断点,这里感兴趣可以再了解一下gdb的使用。
接下来我们要说到如何通过VS Code进行调试。
三、在VS Code中编译调试
首先安装完VS Code之后,还需要安装一下扩展cpptools,请自行完成。

点击菜单 查看-> 调试,或直接快捷键ctrl + shift + D

点击设置图标,在弹出的选择环境中选择C++(GDB/LLDB),会自动创建一个launch.json文件

顾名思义,laucn.json的作用是告诉VS Code如何执行启动任务,也就是我们要把什么文件启动起来,在上述例子中显然是build这个可执行文件了。修改一下json文件中波浪线的program节点,改成${workspaceRoot}/build,其余的暂时不变
1 {
2 "version": "0.2.0",
3 "configurations": [
4 {
5 "name": "C++ Launch",
6 "type": "cppdbg",
7 "request": "launch",
8 "program": "${workspaceRoot}/build",
9 "args": [],
10 "stopAtEntry": false,
11 "cwd": "${workspaceRoot}",
12 "environment": [],
13 "externalConsole": true,
14 "linux": {
15 "MIMode": "gdb"
16 },
17 "osx": {
18 "MIMode": "lldb"
19 },
20 "windows": {
21 "MIMode": "gdb"
22 }
23 },
24 {
25 "name": "C++ Attach",
26 "type": "cppdbg",
27 "request": "attach",
28 "program": "${workspaceRoot}/build",
29 "processId": "${command.pickProcess}",
30 "linux": {
31 "MIMode": "gdb"
32 },
33 "osx": {
34 "MIMode": "lldb"
35 },
36 "windows": {
37 "MIMode": "gdb"
38 }
39 }
40 ]
41 }










