VSCode C++开发环境设置-构建及运行,重点在于编译器设置文件 tasks.json 。
步骤
-
安装C++扩展
-
安装Clang
- 查看命令: clang --version
- 若未安装,安装命令行开发工具的命令:xcode-select --install
-
新建文件夹helloworld, 用VSCode打开, 然后新建main.cpp, 当前目录结构如下:
helloworld |- helloworld.cpp
-
编辑helloworld.cpp, 内容如下:
#include <iostream> #include <vector> #include <string> using namespace std; int main() { vector<string> msg{"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"}; for (const string &word : msg) { cout << word << " "; } cout << endl; return 0; }
-
构建
-
helloworld.cpp为active状态(当前打开状态)
-
选择Terminal->Configure Default Build Task, 会出现一个下拉框,列出了许多VSCode在你的机器上发现的预先定义的编译器构建任务(build tasks),
-
选择 C/C++: clang++ build active file
-
此时会在.vscode文件夹下创建tasks.json文件,并在编辑窗口打开该文件,内容如下:
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: clang++ build active file", "command": "/usr/bin/clang++", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "compiler: /usr/bin/clang++" } ] }
-
当前目录结构如下:
helloworld |- .vscode |- tasks.json \\ 编译器构建设置 |- helloworld.cpp
-
tasks.json 解释
-
command设置指定要运行的程序。该例中,"clang++"是导致Clang编译器期望C++编码并链接到C++标准库的驱动程序。
-
args数组指定了将传递给clang++的命令行参数。这些参数必须按照编译器预期的顺序进行指定。
-
此任务要求C++编译器编译活动(active)文件(${file}),并在当前目录(${fileDirname})中创建一个与活动文件名称相同(${fileBasenameNoExtension})的输出文件(-o),我们的例子中即创建helloworld。
-
label是你在任务列表中将看到的值,可以任意命名
-
problemMatcher选择输出解析器,用来在编译器输出中发现错误和警告。对于clang++,使用$gcc问题匹配器将能得到最佳结果。
-
在group对象中的**“isDefault”: true指定你按下⇧⌘B将会运行该任务。该项仅是为了方便,你也可以通过Terminal->Run Build Task** 进行构建。
-
更多命令,参见variables-reference
-
修改args如下
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: clang++ build active file", "command": "/usr/bin/clang++", "args": [ "-std=c++17", // add "-stdlib=libc++", // add "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "compiler: /usr/bin/clang++" } ] }
-
-
-
运行
-
回到helloworld.cpp,保证它是active状态(当前打开状态)
-
按⇧⌘B或者Terminal->Run Build Task,此时你应该看到集成终端窗口出现在代码编辑器下面。任务完成后,终端将显示编译器的输出,指示生成是成功还是失败。对于成功的clang构建,输出如下所示:
-
点击集成终端窗口右上角工具栏的+号会新建一个终端,用ls -al 查看内容,如下
-
用./helloworld运行程序
lee@leedeMacBook-Pro helloworld % ./helloworld Hello C++ World from VS Code and the C++ extension! lee@leedeMacBook-Pro helloworld %
-
-
修改tasks.json
- 多个C++源文件构建,可以将 ${file} 替换为 “${workspaceFolder}/*cpp”
- 输出"${fileDirname}/${fileBasenameNoExtension}“也可以直接硬编码,例如改为”${workspaceFolder}/myProgram.out"。