g++ 、gcc能在本地終端中運(yùn)行一個(gè)c/cpp文件
終端嘗試
gcc -v
g++ -v
如果有關(guān)于版本信息,則含有編譯器。
g++ mian.cpp -o main.exe && main
-o 后接產(chǎn)生exe的文件名,exe可以省略
&& 后接產(chǎn)生的exe文件,exe可以省略
實(shí)際上這是兩個(gè)命令,因?yàn)閑xe文件的執(zhí)行直接命令行輸入文件名即可。
?? ??? ?查看gcc,g++版本
????????
?gcc運(yùn)行c程序
g++運(yùn)行cpp程序
如果終端能運(yùn)行,而vscode中運(yùn)行不了大概率就是編譯命令的問題了
打開設(shè)置
進(jìn)入settings.json全局文件
?
修改運(yùn)行命令?
?
如果這步之后能成功運(yùn)行,下面的都可以不用看了,下面是針對當(dāng)前文件夾下的局部設(shè)置!?。?/strong>
設(shè)置.vscode文件夾下settings.json文件
? ? ? ? 其實(shí)最終要的是code-runner.executorMap,因?yàn)樗O(shè)置你的命令行是怎么樣的,換言之,變成通用的產(chǎn)生exe文件并運(yùn)行的指令。
????????如果在終端能夠運(yùn)行,那么將原來的命令改為我下面的,也應(yīng)該是能夠的。
????????其次想深入探究的話,看看每一個(gè)后面的注釋吧。
{
? ?"files.defaultLanguage": "cpp", // ctrl+N新建文件后默認(rèn)的語言
? ?"editor.formatOnType": true, // 輸入時(shí)就進(jìn)行格式化,默認(rèn)觸發(fā)字符較少,分號(hào)可以觸發(fā)
? ?"editor.snippetSuggestions": "top", // snippets代碼優(yōu)先顯示補(bǔ)全
?
? ?"code-runner.runInTerminal": true, // 設(shè)置成false會(huì)在“輸出”中輸出,無法輸入
? ?"code-runner.executorMap": {
? ? ? ?"c": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt",
? ? ? ?"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt"
? }, // 設(shè)置code runner的命令行
? ?"code-runner.saveFileBeforeRun": true, // run code前保存
? ?"code-runner.preserveFocus": true, // 若為false,run code后光標(biāo)會(huì)聚焦到終端上。如果需要頻繁輸入數(shù)據(jù)可設(shè)為false
? ?"code-runner.clearPreviousOutput": false, // 每次run code前清空屬于code runner的終端消息
?
}
c_cpp_properties.json - 編譯環(huán)境相關(guān)的設(shè)置
該文件用于指定一般的編譯環(huán)境,包括頭文件路徑,編譯器的路徑等。通過 Ctrl + Shift + p 打開命令行,鍵入關(guān)鍵字 "C++",在下拉菜單中選擇 "C/C++ Edit configuration",系統(tǒng)即自動(dòng)在 .vscode 目錄下創(chuàng)建 c_cpp_properties.json 文件,供用戶進(jìn)行編譯方面的環(huán)境配置。
-
compilerPath要精確到:
gcc.exe
-
Cmd獲取includePath:
gcc -v -E -x c++ -
(作用:防止include報(bào)錯(cuò):file not found) -
includePath每項(xiàng)前后都要有:
" "
,每項(xiàng)之間都要有:,
-
實(shí)在找不到路徑,下載個(gè)everything軟件,找找路徑在哪
{
? ?"configurations": [
? ? ? {
? ? ? ? ? ?"name": "Win32", ?//環(huán)境名
? ? ? ? ? ?"includePath": [
? ? ? ? ? ? ? ?"${workspaceFolder}/**", //指定頭文件路徑,這里指定的是當(dāng)前工作目錄,如有需要在后面添加,添加方式是加入 "/to/path" 格式的路徑
? ? ? ? ? ? ? ?"C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\lib\\gcc\\x86_64-w64-mingw32\\4.8.1\\include\\c++",
? ? ? ? ? ? ? ?"C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\lib\\gcc\\x86_64-w64-mingw32\\4.8.1\\include",
? ? ? ? ? ? ? ?"C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\lib\\gcc\\x86_64-w64-mingw32\\4.8.1\\include\\c++\\x86_64-w64-mingw32",
? ? ? ? ? ? ? ?"C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\lib\\gcc\\x86_64-w64-mingw32\\4.8.1\\include\\c++\\backward",
? ? ? ? ? ? ? ?"C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\lib\\gcc\\x86_64-w64-mingw32\\4.8.1\\include-fixed",
? ? ? ? ? ? ? ?"C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\lib\\gcc\\x86_64-w64-mingw32\\4.8.1\\..\\..\\..\\..\\x86_64-w64-mingw32\\include"
? ? ? ? ? ],
? ? ? ? ? ?"defines": [
? ? ? ? ? ? ? ?"_DEBUG",
? ? ? ? ? ? ? ?"UNICODE",
? ? ? ? ? ? ? ?"_UNICODE"
? ? ? ? ? ],
? ? ? ? ? ?"compilerPath": "D:\\Program Files (x86)\\mingw64\\bin\\gcc.exe", ?//編譯器的路徑,可根據(jù)自己的安裝情況進(jìn)行設(shè)置
? ? ? ? ? ?"cStandard": "gnu17",
? ? ? ? ? ?"cppStandard": "gnu++14", ?//設(shè)置使用的 C/C++ 標(biāo)準(zhǔn)
? ? ? ? ? ?"intelliSenseMode": "windows-gcc-x64"
? ? ? }
? ],
? ?"version": 4
}
tasks.json
????????該文件用于指定程序的編譯規(guī)則,即如何將源文件編譯為可執(zhí)行程序。通過 Ctrl + Shift + p 打開命令行,鍵入關(guān)鍵字 "task",并在下拉菜單中選擇 Tasks: Configure Default Build Task -> Create tassk.json file from template -> Others ,系統(tǒng)即自動(dòng)在 .vscode 目錄下創(chuàng)建 task.json 文件( 基礎(chǔ)模版 ),供用戶設(shè)置具體的編譯規(guī)則。
注意此時(shí)僅生成了一個(gè) task.json 的簡化模板,修改該文件中 label 鍵的值,再打開命令行,選擇 Tasks:Configure Default Build Task 選項(xiàng),此時(shí)修改后的 label 名字會(huì)出現(xiàn)在選項(xiàng)欄中,此時(shí)選中該 label的名字,則對應(yīng)的 task.json 文件會(huì)發(fā)生改變,并被設(shè)置為默認(rèn)編譯對象( 即執(zhí)行命令 Tasks: Run Build Tasks 時(shí)默認(rèn)執(zhí)行的是該 task.json 文件對應(yīng)的編譯 ),其大致格式如下所示。用戶需要根據(jù)實(shí)際情況對其中的鍵值進(jìn)行修改。
{
? ?"version": "2.0.0",
? ?"tasks": [
? ? ? {
? ? ? ? ? ?"label": "Compile", // 任務(wù)名稱,與launch.json的preLaunchTask相對應(yīng)
? ? ? ? ? ?"command": "clang++", // 要使用的編譯器
? ? ? ? ? ?"args": [
? ? ? ? ? ? ? ?"${file}",
? ? ? ? ? ? ? ?"-o", // 指定輸出文件名,不加該參數(shù)則默認(rèn)輸出a.exe,Linux下默認(rèn)a.out
? ? ? ? ? ? ? ?"${fileDirname}/${fileBasenameNoExtension}.exe",
? ? ? ? ? ? ? ?"-g", // 生成和調(diào)試有關(guān)的信息
? ? ? ? ? ? ? ?"-Wall", // 開啟額外警告
? ? ? ? ? ? ? ?"-static-libgcc", // 靜態(tài)鏈接
? ? ? ? ? ? ? ?"-fcolor-diagnostics", // 彩色的錯(cuò)誤信息?但貌似clang默認(rèn)開啟而gcc不接受此參數(shù)
? ? ? ? ? ? ? ?"--target=x86_64-w64-mingw", // clang的默認(rèn)target為msvc,不加這一條就會(huì)找不到頭文件;Linux下去掉這一條
? ? ? ? ? ? ? ?"-std=c++17" // C語言最新標(biāo)準(zhǔn)為c11,或根據(jù)自己的需要進(jìn)行修改
? ? ? ? ? ], // 編譯命令參數(shù)
? ? ? ? ? ?"type": "shell", // 可以為shell或process,前者相當(dāng)于先打開shell再輸入命令,后者是直接運(yùn)行命令
? ? ? ? ? ?"group": {
? ? ? ? ? ? ? ?"kind": "build",
? ? ? ? ? ? ? ?"isDefault": true // 設(shè)為false可做到一個(gè)tasks.json配置多個(gè)編譯指令,需要自己修改本文件,我這里不多提
? ? ? ? ? },
? ? ? ? ? ?"presentation": {
? ? ? ? ? ? ? ?"echo": true,
? ? ? ? ? ? ? ?"reveal": "always", // 在“終端”中顯示編譯信息的策略,可以為always,silent,never。具體參見VSC的文檔
? ? ? ? ? ? ? ?"focus": false, // 設(shè)為true后可以使執(zhí)行task時(shí)焦點(diǎn)聚集在終端,但對編譯c和c++來說,設(shè)為true沒有意義
? ? ? ? ? ? ? ?"panel": "shared" // 不同的文件的編譯信息共享一個(gè)終端面板
? ? ? ? ? }
? ? ? ? ? ?// "problemMatcher":"$gcc" // 如果你不使用clang,去掉前面的注釋符,并在上一條之后加個(gè)逗號(hào)。照著我的教程做的不需要改(也可以把這行刪去)
? ? ? }
? ]
}
精簡自己的如下:
{
? ?"version": "2.0.0",
? ?"tasks": [
? ? ? {
? ? ? ? ? ?"type": "shell",
? ? ? ? ? ?"label": "build",
? ? ? ? ? ?"command": "C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\bin\\g++.exe",
? ? ? ? ? ?"args": [
? ? ? ? ? ? ? ?"-g",
? ? ? ? ? ? ? ?"${file}",
? ? ? ? ? ? ? ?"-o",
? ? ? ? ? ? ? ?"${fileDirname}\\${fileBasenameNoExtension}.exe"
? ? ? ? ? ],
? ? ? ? ? ?"options": {
? ? ? ? ? ? ? ?"cwd": "${fileDirname}"
? ? ? ? ? },
? ? ? ? ? ?"problemMatcher": [
? ? ? ? ? ? ? ?"$gcc"
? ? ? ? ? ],
? ? ? ? ? ?"group": "build",
? ? ? ? ? ?"detail": "編譯器: \"C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\bin\\g++.exe\""
? ? ? },
? ? ? {
? ? ? ? ? ?"type": "cppbuild",
? ? ? ? ? ?"label": "C/C++: g++.exe 生成活動(dòng)文件",
? ? ? ? ? ?"command": "C:/Program Files (x86)/Dev-Cpp/MinGW64/bin/g++.exe",
? ? ? ? ? ?"args": [
? ? ? ? ? ? ? ?"-g",
? ? ? ? ? ? ? ?"${file}",
? ? ? ? ? ? ? ?"-o",
? ? ? ? ? ? ? ?"${fileDirname}\\${fileBasenameNoExtension}.exe"
? ? ? ? ? ],
? ? ? ? ? ?"options": {
? ? ? ? ? ? ? ?"cwd": "C:/Program Files (x86)/Dev-Cpp/MinGW64/bin"
? ? ? ? ? },
? ? ? ? ? ?"problemMatcher": [
? ? ? ? ? ? ? ?"$gcc"
? ? ? ? ? ],
? ? ? ? ? ?"group": {
? ? ? ? ? ? ? ?"kind": "build",
? ? ? ? ? ? ? ?"isDefault": true
? ? ? ? ? },
? ? ? ? ? ?"detail": "調(diào)試器生成的任務(wù)。"
? ? ? }
? ]
}
launch.json
????????該文件主要與程序的調(diào)試相關(guān)。用戶可通過 Ctrl+Shift+p 打開命令行,鍵入關(guān)鍵字 "launch",選擇 "Debug:Open launch.json" -> "C++(GDB/LLDB)",即可打開調(diào)試的配置文件 launch.json。該文件設(shè)置 VScode 在調(diào)試時(shí)的基本內(nèi)容和要求.在配置好 launch.json 文件后, 按 F5 即可進(jìn)入調(diào)試模式。launch.json 文件的基本選項(xiàng)如下所示。
{
? ?"version": "0.2.0",
? ?"configurations": [
? ? ? {
? ? ? ? ? ?"name": "(gdb) Launch", // 配置名稱,將會(huì)在啟動(dòng)配置的下拉菜單中顯示
? ? ? ? ? ?"type": "cppdbg", // 配置類型,這里只能為cppdbg
? ? ? ? ? ?"request": "launch", // 請求配置類型,可以為launch(啟動(dòng))或attach(附加)
? ? ? ? ? ?"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 將要進(jìn)行調(diào)試的程序的路徑
? ? ? ? ? ?"args": [], // 程序調(diào)試時(shí)傳遞給程序的命令行參數(shù),一般設(shè)為空即可
? ? ? ? ? ?"stopAtEntry": false, // 設(shè)為true時(shí)程序?qū)和T诔绦蛉肟谔?,我一般設(shè)置為true
? ? ? ? ? ?"cwd": "${workspaceFolder}", // 調(diào)試程序時(shí)的工作目錄
? ? ? ? ? ?"environment": [], // (環(huán)境變量?)
? ? ? ? ? ?"externalConsole": true, // 調(diào)試時(shí)是否顯示控制臺(tái)窗口,一般設(shè)置為true顯示控制臺(tái)
? ? ? ? ? ?"internalConsoleOptions": "neverOpen", // 如果不設(shè)為neverOpen,調(diào)試時(shí)會(huì)跳到“調(diào)試控制臺(tái)”選項(xiàng)卡,你應(yīng)該不需要對gdb手動(dòng)輸命令吧?
? ? ? ? ? ?"MIMode": "gdb", // 指定連接的調(diào)試器,可以為gdb或lldb。但目前l(fā)ldb在windows下沒有預(yù)編譯好的版本。
? ? ? ? ? ?"miDebuggerPath": "gdb.exe", // 調(diào)試器路徑,Windows下后綴不能省略,Linux下則去掉
? ? ? ? ? ?"setupCommands": [ // 用處未知,模板如此
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ?"description": "Enable pretty-printing for gdb",
? ? ? ? ? ? ? ? ? ?"text": "-enable-pretty-printing",
? ? ? ? ? ? ? ? ? ?"ignoreFailures": false
? ? ? ? ? ? ? }
? ? ? ? ? ],
? ? ? ? ? ?"preLaunchTask": "Compile" // 調(diào)試會(huì)話開始前執(zhí)行的任務(wù),一般為編譯程序。與tasks.json的label相對應(yīng)
? ? ? }
? ]
}
精簡自己的如下:文章來源:http://www.zghlxwxcb.cn/news/detail-708797.html
{
? ?"version": "0.2.0",
? ?"configurations": [
? ? ? {
? ? ? ? ? ?"name": "Launch", // 配置名稱,將會(huì)在啟動(dòng)配置的下拉菜單中顯示
? ? ? ? ? ?"type": "cppdbg", // 配置類型,這里只能為cppdbg
? ? ? ? ? ?"request": "launch", // 請求配置類型,可以為launch(啟動(dòng))或attach(附加)
? ? ? ? ? ?"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 將要進(jìn)行調(diào)試的程序的路徑
? ? ? ? ? ?"args": [], // 程序調(diào)試時(shí)傳遞給程序的命令行參數(shù),一般設(shè)為空即可
? ? ? ? ? ?"stopAtEntry": true, // 設(shè)為true時(shí)程序?qū)和T诔绦蛉肟谔?,我一般設(shè)置為true
? ? ? ? ? ?"cwd": "${workspaceFolder}", // 調(diào)試程序時(shí)的工作目錄
? ? ? ? ? ?"environment": [], // (環(huán)境變量?)
? ? ? ? ? ?"externalConsole": true, // 調(diào)試時(shí)是否顯示控制臺(tái)窗口,一般設(shè)置為true顯示控制臺(tái)
? ? ? ? ? ?"internalConsoleOptions": "neverOpen", // 如果不設(shè)為neverOpen,調(diào)試時(shí)會(huì)跳到“調(diào)試控制臺(tái)”選項(xiàng)卡,你應(yīng)該不需要對gdb手動(dòng)輸命令吧?
? ? ? ? ? ?"MIMode": "gdb", // 指定連接的調(diào)試器,可以為gdb或lldb。但目前l(fā)ldb在windows下沒有預(yù)編譯好的版本。
? ? ? ? ? ?"miDebuggerPath": "C:\\Program Files (x86)\\Dev-Cpp\\MinGW64\\bin\\gdb.exe", // 調(diào)試器路徑,Windows下后綴不能省略,Linux下則去掉
? ? ? ? ? ?"setupCommands": [ // 用處未知,模板如此
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ?"description": "Enable pretty-printing for gdb",
? ? ? ? ? ? ? ? ? ?"text": "-enable-pretty-printing",
? ? ? ? ? ? ? ? ? ?"ignoreFailures": false
? ? ? ? ? ? ? }
? ? ? ? ? ],
? ? ? ? ? ?"preLaunchTask": "build" // 調(diào)試會(huì)話開始前執(zhí)行的任務(wù),一般為編譯程序。與tasks.json的label相對應(yīng)
? ? ? }
? ]
}
成功演示
文章來源地址http://www.zghlxwxcb.cn/news/detail-708797.html
到了這里,關(guān)于關(guān)于Vscode中C++的json配置文件解讀的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!