Linux/Manjaro如何配置Vscode的C/C++編譯環(huán)境
Linux/Manjaro配置Vscode的C/C++編譯環(huán)境

安裝gcc/g++
Arch/Manjaro安裝gcc和g++非常簡單
安裝gcc和gcc-libs
sudo pacman -S gcc sudo pacman -S gcc-libs sudo pacman -S gdb
安裝vscode
安裝vscode,使用yay搜索軟件包
yay -S visual-studio-code-bin
直接安裝最新版本即可
如果還沒有安裝yay,需要通過git克隆yay的代碼倉庫
# 安裝base-devel sudo pacman -S base-devel # 安裝git sudo pacman -S git # cd到/opt cd /opt # 通過git克隆yay的代碼倉庫 sudo git clone https://aur.archlinux.org/yay.git #設置權(quán)限,將lin改為你的用戶名 sudo chown -R lin:users ./yay # 進入yay文件夾并安裝yay cd yay makepkg -si
然后再執(zhí)行安裝vscode的命令
yay -S visual-studio-code-bin
配置vscode的C/C++環(huán)境
安裝插件
點擊拓展,安裝幾個基本的插件:
- C/C++、C/C++ Extension pack、C/C++ Themes
- Code Runner:
- snippet:代碼段模板
- Chinese:中文插件,安裝好后重啟vscode
先寫一個hellow程序
在資源管理器中打開工作空間,我這里是/home/lin/Code/Cgit。 新建一個hellow文件夾,在文件夾中新建三個文件hellow.cpp map.cpp map.h用來方便測試后面的json文件是否配置完成。
編寫下面的文件
//hellow.cpp
#include "map.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int i = 1;
int main()
{
cout << "Hellow World"
<< " " << AandB(i);
cout << endl;
}//map.cpp
#include <iostream>
using namespace std;
int AandB(int a)
{
a++;
return a;
}//map.h #ifndef MAP_H #define MAP_H extern int i; int AandB(int a); #endif
編寫好后保存文件,下面就可以開始編寫json文件,來引導vscode編譯程序了。
編寫json文件
json文件現(xiàn)在非常好讀,通過chatgpt即可根據(jù)需求編寫對應的json文件,這里將介紹一些比較基本的設置項和如何設置json文件以引導編譯C/C++文件。
編寫完的json文件可以在這個網(wǎng)站查詢是否有效
編寫vscode設置項json文件
首先點擊文件-首選項-設置,右上角有一個打開設置的圖標

這里會打開vscode設置項的settings.json文件,這個文件包含了一些vscode的基本設置。
{
"C_Cpp.files.exclude": {
"**/.vscode": true,
"**/.vs": true
},
"C_Cpp.default.customConfigurationVariables": {},
"code-runner.runInTerminal": true,
"code-runner.saveFileBeforeRun": true,
"C_Cpp.default.compilerPath": "/usr/bin/clang",
"files.autoGuessEncoding": true,
"security.workspace.trust.untrustedFiles": "open"
}上面是我的settings.json文件,大家可以直接用,其中code-runner需要安裝code runner插件。
"C_Cpp.files.exclude": {...}:這個設置項是 C/C++ 擴展的配置,用于指定要排除在項目外的文件。在這個例子中,**/.vscode和**/.vs目錄下的文件將被排除在項目外。"C_Cpp.default.customConfigurationVariables": {}:這個設置項是 C/C++ 擴展的配置,用于指定自定義的編譯選項。在這個例子中,沒有指定任何自定義編譯選項。"code-runner.runInTerminal": true:這個設置項是 Code Runner 擴展的配置,用于指定代碼是否在終端中運行。在這個例子中,設置為true,即代碼將在終端中運行。"code-runner.saveFileBeforeRun": true:這個設置項是 Code Runner 的配置,用于指定代碼是否在運行前保存。在這個例子中,設置為true,即代碼將在運行前自動保存。"C_Cpp.default.compilerPath": "/usr/bin/clang":這個設置項是 C/C++ 擴展的配置,用于指定默認的編譯器路徑。在這個例子中,指定為/usr/bin/clang,即使用 clang 編譯器。"files.autoGuessEncoding": true:這個設置項用于指定是否自動猜測文件編碼。在這個例子中,設置為true,即 Visual Studio Code 將嘗試自動猜測文件編碼。"security.workspace.trust.untrustedFiles": "open":這個設置項用于指定未受信任的文件的打開方式。在這個例子中,設置為open,即未受信任的文件將以只讀模式打開。
編寫編譯json文件
上面在工作空間中我打開的是/home/lin/Code/Cgit,并在這個文件夾下創(chuàng)建了一個hellow文件。在工作空間目錄下創(chuàng)建一個新的文件夾.vscode,用來存放我們的json文件。 在新創(chuàng)建的.vscode文件中新建四個文件: c_cpp_properties.json :用來設置編譯器的路徑和頭文件路徑等信息。 launch.json:調(diào)試配置文件,用于在編寫 C/C++ 代碼時配置調(diào)試器 settings.json:設置項配置文件,用來設置一些編譯C/C++程序時的一些設置選項 tasks.json:任務配置文件,用于定義一些自定義任務,以便在編輯器中執(zhí)行它們。
創(chuàng)建后的工作空間是這樣的

settings.json
{
"files.defaultLanguage": "cpp",
"editor.formatOnType": true,
"editor.formatOnSave": true,
"editor.snippetSuggestions": "top",
"code-runner.runInTerminal": true,
"code-runner.executorMap": {
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt.out",
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt.out"
},
"code-runner.saveFileBeforeRun": true,
"code-runner.clearPreviousOutput": false,
"C_Cpp.clang_format_sortIncludes": true,
"C_Cpp.intelliSenseEngine": "default",
"cmake.configureOnOpen": false,
"files.associations": {
"iosfwd": "cpp"
}
}settings.json文件沒有什么好改的,如果想自己設置可以問chatgpt
c_cpp_properties.json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/${workspaceFolderBasename}",
"/usr/include",
"/lib64/gcc/x86_64-pc-linux-gnu/12.2.1/include/"
],
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64",
"defines": [
"_DEBUG",
"UNICODE",
"__GNUC__=7",
"__cdecl=__attribute__((__cdecl__))"
],
"browse": {
"path": [
"${workspaceFolder}",
"/usr/include",
"/lib64/gcc/x86_64-pc-linux-gnu/12.2.1/include/",
"/lib64/gcc/x86_64-pc-linux-gnu/12.2.1/include-fixed/",
"/lib64/gcc/x86_64-pc-linux-gnu/12.2.1/install-tools/include/"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}c_cpp_properties.json主要需要修改的是includePath,這個選項包含了頭文件的地址,需要自己設置一下自己編寫的頭文件的目錄,我比較習慣直接將頭文件放在工程目錄,就添加"${workspaceFolder}/${workspaceFolderBasename}" ${workspaceFolder}是工作空間名稱變量代表 ${workspaceFolderBasename}是運行程序所在目錄,如果我運行/home/lin/Code/Cgit/hellow/hellow.cpp,這個變量就是hellow 我添加的頭文件目錄就是/home/lin/Code/Cgit/hellow/,我們只需要在項目文件夾中編寫頭文件即可
如果習慣在項目文件夾中單獨建一個問價夾存放頭文件可以在
includePath添加"${workspaceFolder}/${workspaceFolderBasename}/include"把頭文件放在include文件夾中即可
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "創(chuàng)建并調(diào)試C文件",
"type": "shell",
"command": "gcc",
"args": [
"-I",
"${workspaceFolder}/${relativeFileDirname}",
"-g",
"${workspaceFolder}/${relativeFileDirname}/*.cpp",
"-o",
"${workspaceFolder}/${relativeFileDirname}/${fileBasenameNoExtension}.out"
],
"group": "build"
},
{
"label": "創(chuàng)建并調(diào)試C++文件",
"type": "shell",
"command": "g++",
"args": [
"-I",
"${workspaceFolder}/${relativeFileDirname}",
"-g",
"${workspaceFolder}/${relativeFileDirname}/*.cpp",
"-o",
"${workspaceFolder}/${relativeFileDirname}/${fileBasenameNoExtension}.out"
],
"group": "build"
},
{
"label": "創(chuàng)建并運行C文件",
"type": "shell",
"command": "gcc",
"args": [
"-I",
"${workspaceFolder}/${relativeFileDirname}",
"${workspaceFolder}/${relativeFileDirname}/*.cpp",
"-o",
"${workspaceFolder}/${relativeFileDirname}/${fileBasenameNoExtension}.out"
],
"group": "build"
},
{
"label": "創(chuàng)建并運行C++文件",
"type": "shell",
"command": "g++",
"args": [
"-I",
"${workspaceFolder}/${relativeFileDirname}",
"${workspaceFolder}/${relativeFileDirname}/*.cpp",
"-o",
"${workspaceFolder}/${relativeFileDirname}/${fileBasenameNoExtension}.out"
],
"group": "build"
}
]
}tasks.json文件會生成.exe或.out文件,linux我們就選擇.out文件,這里需要修改的是"args"這里對應的是gcc或g++編譯指令。 我們這里設置的是
"args": [
"-I",
"${workspaceFolder}/${relativeFileDirname}",
"${workspaceFolder}/${relativeFileDirname}/*.cpp",
"-o",
"${workspaceFolder}/${relativeFileDirname}/${fileBasenameNoExtension}.out"
]在編譯hellow.cpp的時候就會執(zhí)行g++ -I /home/lin/Code/Cgit/hellow /home/lin/Code/Cgit/hellow/*.cpp -o /home/lin/Code/Cgit/hellow/hellow.out
下面是每個參數(shù)的解釋:
g++:這個參數(shù)指定了使用的編譯器,這個例子中為 g++ 編譯器。-I /home/lin/Code/Cgit/hellow:這個參數(shù)指定了頭文件的搜索路徑,/home/lin/Code/Cgit/hellow是頭文件所在的目錄。/home/lin/Code/Cgit/hellow/*.cpp:這個參數(shù)指定了要編譯的源文件,/home/lin/Code/Cgit/hellow是源文件所在的目錄,*.cpp表示編譯該目錄下所有的 C++ 源文件。-o /home/lin/Code/Cgit/hellow/hellow.out:這個參數(shù)指定了生成的可執(zhí)行文件的輸出路徑,/home/lin/Code/Cgit/hellow/hellow.out是生成的可執(zhí)行文件的完整路徑。
每次編譯完成都會在項目目錄中生成.out文件,當然也可以自己設置.out文件的保存路徑,但同樣需要修改launch.json文件,
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Run C",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${relativeFileDirname}/${fileBasenameNoExtension}.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/${relativeFileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "創(chuàng)建并運行C文件"
},
{
"name": "Run C++",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${relativeFileDirname}/${fileBasenameNoExtension}.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/${relativeFileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "創(chuàng)建并運行C++文件"
},
{
"name": "Debug C",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${relativeFileDirname}/${fileBasenameNoExtension}.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/${relativeFileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "創(chuàng)建并調(diào)試C文件"
},
{
"name": "Debug C++",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${relativeFileDirname}/${fileBasenameNoExtension}.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/${relativeFileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "創(chuàng)建并調(diào)試C++文件"
}
]
}launch.json文件設置了編譯 C/C++ 代碼時配置調(diào)試器,有幾點需要特別注意
- "preLaunchTask"名稱一定要與
tasks.json文件中的lable一致,這將影響調(diào)試時是否能找到對應的調(diào)試器 - "cwd"用于指定調(diào)試器的當前工作目錄,要設置成你的項目目錄,不然讀取C++讀取文件的時候相對路徑會出現(xiàn)問題
- "program"要與
tasks.json文件中的args中的“-o”的地址一致,不然讀取不到.out文件,我這里都設置的是`"workspaceFolder/{workspaceFolder}/workspaceFolder/{relativeFileDirname}/${fileBasenameNoExtension}.out"``
以上設置完成json文件,我們就可以運行C++程序了
運行hellow.cpp
- 資源管理器中點擊hellow.cpp進入文件,點擊左側(cè)欄中帶有小蟲子圖標的“運行和調(diào)試”
- 選擇”debug C++“,這里的名稱是在
launch.json中的"name"設置的找到對應的就行。 - 點擊綠色三角運行。

- 終端輸出
Hellow World 2表示配置成功

到此這篇關(guān)于Linux/Manjaro配置Vscode的C/C++編譯環(huán)境的文章就介紹到這了,更多相關(guān)Vscode的C/C++編譯環(huán)境內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Protocol Buffer技術(shù)深入理解(C++實例)
C++實例Protocol Buffer技術(shù)詳解,感興趣的朋友可以了解下2013-01-01
C++實現(xiàn)LeetCode(84.直方圖中最大的矩形)
這篇文章主要介紹了C++實現(xiàn)LeetCode(84.直方圖中最大的矩形),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07
C++實現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序
這篇文章主要為大家詳細介紹了C++實現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05

