赞
踩
clang --version
来确认是否安装)
创建工作区(WorkSpace)
打开 VSCode, 创建一个 project 文件夹。
现在,project 就是我们的工作区(WorkSpace)了。当我们继续做完本教程的配置,这个工作区中将出现一个子文件夹.vscode,包含三个文件。
● tasks.json(编译选项设置)
在 project 文件夹下创建一个 hello.cpp 文件
在 hello.cpp中粘贴以下内容
- #include <iostream>
-
- using namespace std;
-
- int main(){
- cout << "Hello World" << endl;
- }
Command+S(⌘S)保存该文件,
注意:C++扩展是使用机器上已安装的 C++编译器来生成程序,所以在运行/调试 hello.cpp 前,请确保你已经符合了文章开头的前提,安装好了 C++编译器。
打开 hello.cpp,这将它将成为 active file,可以被用于生成和调试
点击图中右上角的按钮,选择 Run C/C++ File
在跳出的选项中,选择C/C++: clang++ build and debug active file。
只有在第一次运行 hello.cpp 时才需要做这个选择。选择后,.vscode 文件夹中出现了一个新文件tasks.json,我们选择的编译器配置将作为默认设置。
编译成功后,程序的输出将显示在下方的 DEBUG CONSOLE
至此,我们已经成功地运行了 VS Code 上的第一个 C++程序!
gcc/g++ 和 clang/clang++ 都是 Linux 下常用的 C/C++ 编译器。gcc 是 GNU 亲儿子,Ubuntu 等常用发行版标配。clang 是后起之秀,配合 llvm,以优秀的前端闻名于世,现在已经是 Mac(XCode) 的默认编译器,微软等大公司都在往上靠,前景一片光明。知乎上对几个主流编译器的评价:
在标准支持方面,clang > g++ > vc > icc。从实际使用来看,非常取决于平台。比如win上vc最好,osx上clang最好,等。其他特点还有icc编译出来的东西在intel cpu上快。
clang/g++需要注意的是,他们的编译器对标准支持很好,但库的支持严重不行。以至于如果你要C++11/C++14,还是会打折扣的。另外,clang在win上简直是没有见过更屎的。
对于vc来说,编译速度这几代在一直提高,内存占用从vc12开始有明显改进,最明显的是Variadic template。还有内置的代码静态分析,在实际中很有用。vc14的静态分析不在每次载入一个ie(对,以前每分析一个.cpp,就载入一次ie!),速度快了相当多。
对我自己而言,优先级是clang>g++>msvc。
注:GNU是一个操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU's Not Unix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。GNU的创始人,理查德·马修·斯托曼,将GNU视为“达成社会目的技术方法”。
修改了文件组织形式后,存储了编译配置的 tasks.json 也需要做对应修改。
第一次编译运行 hello.cpp 时,我的机器上生成的 tasks.json
如下:
- {
- "tasks": [
- {
- "type": "cppbuild",
- "label": "C/C++: clang++ build active file",
- "command": "/usr/bin/clang++",
- "args": [
- "-fcolor-diagnostics",
- "-fansi-escape-codes",
- "-g",
- "${file}",
- "-o",
- "${fileDirname}/${fileBasenameNoExtension}"
- ],
- "options": {
- "cwd": "${fileDirname}"
- },
- "problemMatcher": [
- "$gcc"
- ],
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "detail": "Task generated by Debugger."
- }
- ],
- "version": "2.0.0"
- }
我们做如下两个修改:
工程中往往需要一次性编译选定路径下的所有 cpp 文件。对应的,把"args"中的:"${file}"改为"${fileDirname}/*.cpp" 如果不想一次编译所有文件可以不修改
我们希望把编译出的文件统一放置在 target 文件夹下。对应的,把"args"中的"${fileDirname}/${fileBasenameNoExtension}"改为"${workspaceFolder}/target/${fileBasenameNoExtension}"
修改工程文件结构
增加三个子文件夹 include
、src
、target
,并把 hello.cpp 移动到 src 目录下。
然后我们做下测试,看看修改后的工作区可否正常编译运行 hello.cpp
在 include 中创建 print.h,粘贴如下内容:
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
-
- void printMessage(vector<string>& msg);
在 src 中创建 print.cpp,粘贴如下内容:
- #include "../include/print.h"
-
- void printMessage(vector<string> &msg)
- {
- for (int i = 0; i < msg.size(); i ++){
- cout << msg[i] << " ";
- }
- }
修改 src 下的 hello.cpp,粘贴如下内容:
- #include "../include/print.h"
-
- int main(){
- vector<string> msg;
- msg.push_back("Hello"); msg.push_back("World");
- printMessage(msg);
- }
在 hello.cpp 中点击右上角的 run 按钮,可以看到也成功运行了(这说明我们实现了一次性编译多个 cpp 文件),而且目标文件生成到了 target 下。
解决方法
(有多种解决方法,这里选择我认为最易于进行的方法)
Step1:下载相关插件(这一步简单带过)
安装CodeLLDB的扩展插件。
Step2:生成可执行文件
直接点击vscode右上角的运行按钮。
在命令行就可以输入了。
debug调试仍然不行需要修改配置
launch.json
文件)可以看到在当前目录下多了.vscode
文件夹,并且自动创建了launch.json
文件。(这个时候直接进行调试会报错/仍然无法处理输入问题)
这里我们需要修改两个地方:
1、使用集成终端来运行和调试程序:增加 “terminal”: “integrated”, 如果type不是就改为lldb,例:"type":"lldb"
2、运行当前文件所在目录下的同名可执行文件:修改program属性为:“${workspaceFolder}/${fileBasenameNoExtension},需求注意的是先选中要运行的c++文件,然后再点击调试就可以运行成功,否则会提示文件找不到
至此,修改完成。
先运行Run Code,然后运行《运行调试c/c++文件》,再调试就可以输入了。不能直接点击《运行调试c/c++文件》,直接点击依然没有输入的地方。
直接点击需要修改配置,直接点击使用的是插件的调试插件,如下,需要安装xcode,对xcode版本有要求
- {
- // Use IntelliSense to learn about possible attributes.
- // Hover to view descriptions of existing attributes.
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
- "version": "0.2.0",
- "configurations": [
- {
- "name": "clang++ build and debug active file",
- "type": "cppdbg",
- "request": "launch",
- "program": "${fileDirname}/${fileBasenameNoExtension}",
- "args": [],
- "stopAtEntry": false,
- "cwd": "${workspaceFolder}",
- "environment": [],
- "externalConsole": false,
- "miDebuggerPath": "/Applications/Xcode.app/Contents/Developer/usr/bin/lldb-mi",
- "MIMode": "lldb",
- "preLaunchTask": "clang++ build active file"
- }
- ]
- }
codeLLdb下载地址
打开vscode后选择 扩展->视图和更多操作->从VSIX安装
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。