亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2023年05月17日 11:10:47   作者:Morgana  
這篇文章主要介紹了Linux/Manjaro配置Vscode的C/C++編譯環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

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

安裝gcc/g++

Arch/Manjaro安裝gcc和g++非常簡(jiǎn)單

安裝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

直接安裝最新版本即可

如果還沒(méi)有安裝yay,需要通過(guò)git克隆yay的代碼倉(cāng)庫(kù)

# 安裝base-devel
sudo pacman -S base-devel
# 安裝git
sudo pacman -S git
# cd到/opt
cd /opt
# 通過(guò)git克隆yay的代碼倉(cāng)庫(kù)
sudo git clone https://aur.archlinux.org/yay.git
#設(shè)置權(quán)限,將lin改為你的用戶(hù)名
sudo chown -R lin:users ./yay
# 進(jìn)入yay文件夾并安裝yay
cd yay
makepkg -si

然后再執(zhí)行安裝vscode的命令

yay -S visual-studio-code-bin

配置vscode的C/C++環(huán)境

安裝插件

點(diǎn)擊拓展,安裝幾個(gè)基本的插件:

  • C/C++、C/C++ Extension pack、C/C++ Themes
  • Code Runner:
  • snippet:代碼段模板
  • Chinese:中文插件,安裝好后重啟vscode

先寫(xiě)一個(gè)hellow程序

在資源管理器中打開(kāi)工作空間,我這里是/home/lin/Code/Cgit。 新建一個(gè)hellow文件夾,在文件夾中新建三個(gè)文件hellow.cpp map.cpp map.h用來(lái)方便測(cè)試后面的json文件是否配置完成。

編寫(xiě)下面的文件

//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

編寫(xiě)好后保存文件,下面就可以開(kāi)始編寫(xiě)json文件,來(lái)引導(dǎo)vscode編譯程序了。

編寫(xiě)json文件

json文件現(xiàn)在非常好讀,通過(guò)chatgpt即可根據(jù)需求編寫(xiě)對(duì)應(yīng)的json文件,這里將介紹一些比較基本的設(shè)置項(xiàng)和如何設(shè)置json文件以引導(dǎo)編譯C/C++文件。

編寫(xiě)完的json文件可以在這個(gè)網(wǎng)站查詢(xún)是否有效

Fetching Title#u3bx

編寫(xiě)vscode設(shè)置項(xiàng)json文件

首先點(diǎn)擊文件-首選項(xiàng)-設(shè)置,右上角有一個(gè)打開(kāi)設(shè)置的圖標(biāo)

這里會(huì)打開(kāi)vscode設(shè)置項(xiàng)的settings.json文件,這個(gè)文件包含了一些vscode的基本設(shè)置。

{
"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": {...}:這個(gè)設(shè)置項(xiàng)是 C/C++ 擴(kuò)展的配置,用于指定要排除在項(xiàng)目外的文件。在這個(gè)例子中,**/.vscode 和 **/.vs 目錄下的文件將被排除在項(xiàng)目外。
  • "C_Cpp.default.customConfigurationVariables": {}:這個(gè)設(shè)置項(xiàng)是 C/C++ 擴(kuò)展的配置,用于指定自定義的編譯選項(xiàng)。在這個(gè)例子中,沒(méi)有指定任何自定義編譯選項(xiàng)。
  • "code-runner.runInTerminal": true:這個(gè)設(shè)置項(xiàng)是 Code Runner 擴(kuò)展的配置,用于指定代碼是否在終端中運(yùn)行。在這個(gè)例子中,設(shè)置為 true,即代碼將在終端中運(yùn)行。
  • "code-runner.saveFileBeforeRun": true:這個(gè)設(shè)置項(xiàng)是 Code Runner 的配置,用于指定代碼是否在運(yùn)行前保存。在這個(gè)例子中,設(shè)置為 true,即代碼將在運(yùn)行前自動(dòng)保存。
  • "C_Cpp.default.compilerPath": "/usr/bin/clang":這個(gè)設(shè)置項(xiàng)是 C/C++ 擴(kuò)展的配置,用于指定默認(rèn)的編譯器路徑。在這個(gè)例子中,指定為 /usr/bin/clang,即使用 clang 編譯器。
  • "files.autoGuessEncoding": true:這個(gè)設(shè)置項(xiàng)用于指定是否自動(dòng)猜測(cè)文件編碼。在這個(gè)例子中,設(shè)置為 true,即 Visual Studio Code 將嘗試自動(dòng)猜測(cè)文件編碼。
  • "security.workspace.trust.untrustedFiles": "open":這個(gè)設(shè)置項(xiàng)用于指定未受信任的文件的打開(kāi)方式。在這個(gè)例子中,設(shè)置為 open,即未受信任的文件將以只讀模式打開(kāi)。

編寫(xiě)編譯json文件

上面在工作空間中我打開(kāi)的是/home/lin/Code/Cgit,并在這個(gè)文件夾下創(chuàng)建了一個(gè)hellow文件。在工作空間目錄下創(chuàng)建一個(gè)新的文件夾.vscode,用來(lái)存放我們的json文件。 在新創(chuàng)建的.vscode文件中新建四個(gè)文件: c_cpp_properties.json :用來(lái)設(shè)置編譯器的路徑和頭文件路徑等信息。 launch.json:調(diào)試配置文件,用于在編寫(xiě) C/C++ 代碼時(shí)配置調(diào)試器 settings.json:設(shè)置項(xiàng)配置文件,用來(lái)設(shè)置一些編譯C/C++程序時(shí)的一些設(shè)置選項(xiàng) tasks.json:任務(wù)配置文件,用于定義一些自定義任務(wù),以便在編輯器中執(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文件沒(méi)有什么好改的,如果想自己設(shè)置可以問(wèn)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,這個(gè)選項(xiàng)包含了頭文件的地址,需要自己設(shè)置一下自己編寫(xiě)的頭文件的目錄,我比較習(xí)慣直接將頭文件放在工程目錄,就添加"${workspaceFolder}/${workspaceFolderBasename}" ${workspaceFolder}是工作空間名稱(chēng)變量代表 ${workspaceFolderBasename}是運(yùn)行程序所在目錄,如果我運(yùn)行/home/lin/Code/Cgit/hellow/hellow.cpp,這個(gè)變量就是hellow 我添加的頭文件目錄就是/home/lin/Code/Cgit/hellow/,我們只需要在項(xiàng)目文件夾中編寫(xiě)頭文件即可

如果習(xí)慣在項(xiàng)目文件夾中單獨(dú)建一個(gè)問(wèn)價(jià)夾存放頭文件可以在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)建并運(yùn)行C文件",
"type": "shell",
"command": "gcc",
"args": [
"-I",
"${workspaceFolder}/${relativeFileDirname}",
"${workspaceFolder}/${relativeFileDirname}/*.cpp",
"-o",
"${workspaceFolder}/${relativeFileDirname}/${fileBasenameNoExtension}.out"
],
"group": "build"
},
{
"label": "創(chuàng)建并運(yùn)行C++文件",
"type": "shell",
"command": "g++",
"args": [
"-I",
"${workspaceFolder}/${relativeFileDirname}",
"${workspaceFolder}/${relativeFileDirname}/*.cpp",
"-o",
"${workspaceFolder}/${relativeFileDirname}/${fileBasenameNoExtension}.out"
],
"group": "build"
}
]
}

tasks.json文件會(huì)生成.exe.out文件,linux我們就選擇.out文件,這里需要修改的是"args"這里對(duì)應(yīng)的是gcc或g++編譯指令。 我們這里設(shè)置的是

"args": [
"-I",
"${workspaceFolder}/${relativeFileDirname}",
"${workspaceFolder}/${relativeFileDirname}/*.cpp",
"-o",
"${workspaceFolder}/${relativeFileDirname}/${fileBasenameNoExtension}.out"
]

在編譯hellow.cpp的時(shí)候就會(huì)執(zhí)行g++ -I /home/lin/Code/Cgit/hellow /home/lin/Code/Cgit/hellow/*.cpp -o /home/lin/Code/Cgit/hellow/hellow.out

下面是每個(gè)參數(shù)的解釋?zhuān)?/p>

  • g++:這個(gè)參數(shù)指定了使用的編譯器,這個(gè)例子中為 g++ 編譯器。
  • -I /home/lin/Code/Cgit/hellow:這個(gè)參數(shù)指定了頭文件的搜索路徑,/home/lin/Code/Cgit/hellow 是頭文件所在的目錄。
  • /home/lin/Code/Cgit/hellow/*.cpp:這個(gè)參數(shù)指定了要編譯的源文件,/home/lin/Code/Cgit/hellow 是源文件所在的目錄,*.cpp 表示編譯該目錄下所有的 C++ 源文件。
  • -o /home/lin/Code/Cgit/hellow/hellow.out:這個(gè)參數(shù)指定了生成的可執(zhí)行文件的輸出路徑,/home/lin/Code/Cgit/hellow/hellow.out 是生成的可執(zhí)行文件的完整路徑。

每次編譯完成都會(huì)在項(xiàng)目目錄中生成.out文件,當(dāng)然也可以自己設(shè)置.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)建并運(yùn)行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)建并運(yùn)行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文件設(shè)置了編譯 C/C++ 代碼時(shí)配置調(diào)試器,有幾點(diǎn)需要特別注意

  • "preLaunchTask"名稱(chēng)一定要與tasks.json文件中的lable一致,這將影響調(diào)試時(shí)是否能找到對(duì)應(yīng)的調(diào)試器
  • "cwd"用于指定調(diào)試器的當(dāng)前工作目錄,要設(shè)置成你的項(xiàng)目目錄,不然讀取C++讀取文件的時(shí)候相對(duì)路徑會(huì)出現(xiàn)問(wèn)題
  • "program"要與tasks.json文件中的args中的“-o”的地址一致,不然讀取不到.out文件,我這里都設(shè)置的是`"workspaceFolder/{workspaceFolder}/workspaceFolder/{relativeFileDirname}/${fileBasenameNoExtension}.out"``

以上設(shè)置完成json文件,我們就可以運(yùn)行C++程序了

運(yùn)行hellow.cpp

  • 資源管理器中點(diǎn)擊hellow.cpp進(jìn)入文件,點(diǎn)擊左側(cè)欄中帶有小蟲(chóng)子圖標(biāo)的“運(yùn)行和調(diào)試”
  • 選擇”debug C++“,這里的名稱(chēng)是在launch.json中的"name"設(shè)置的找到對(duì)應(yīng)的就行。
  • 點(diǎn)擊綠色三角運(yùn)行。

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

到此這篇關(guān)于Linux/Manjaro配置Vscode的C/C++編譯環(huán)境的文章就介紹到這了,更多相關(guān)Vscode的C/C++編譯環(huán)境內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++你可能不知道地方小結(jié)

    C++你可能不知道地方小結(jié)

    c++中編譯器替我們完成了許多事情,我們可能不知道,但也可能習(xí)以為常
    2013-01-01
  • Protocol Buffer技術(shù)深入理解(C++實(shí)例)

    Protocol Buffer技術(shù)深入理解(C++實(shí)例)

    C++實(shí)例Protocol Buffer技術(shù)詳解,感興趣的朋友可以了解下
    2013-01-01
  • 適合初學(xué)者的C語(yǔ)言轉(zhuǎn)義字符講解

    適合初學(xué)者的C語(yǔ)言轉(zhuǎn)義字符講解

    轉(zhuǎn)義字符是很多程序語(yǔ)言、數(shù)據(jù)格式和通信協(xié)議的形式文法的一部分。對(duì)于一個(gè)給定的字母表,一個(gè)轉(zhuǎn)義字符的目的是開(kāi)始一個(gè)字符序列,使得轉(zhuǎn)義字符開(kāi)頭的該字符序列具有不同于該字符序列單獨(dú)出現(xiàn)(沒(méi)有轉(zhuǎn)義字符開(kāi)頭)時(shí)的語(yǔ)義。因此轉(zhuǎn)義字符開(kāi)頭的字符序列被叫做轉(zhuǎn)義序列
    2022-04-04
  • C++類(lèi)中的特殊成員函數(shù)示例詳解

    C++類(lèi)中的特殊成員函數(shù)示例詳解

    這篇文章主要給大家介紹了關(guān)于C++類(lèi)中特殊成員函數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • QT樹(shù)的具體項(xiàng)目實(shí)現(xiàn)

    QT樹(shù)的具體項(xiàng)目實(shí)現(xiàn)

    本文主要介紹了QT樹(shù)的具體項(xiàng)目實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • C++實(shí)現(xiàn)LeetCode(84.直方圖中最大的矩形)

    C++實(shí)現(xiàn)LeetCode(84.直方圖中最大的矩形)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(84.直方圖中最大的矩形),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實(shí)現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序

    C++實(shí)現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 從頭學(xué)習(xí)C語(yǔ)言之二維數(shù)組

    從頭學(xué)習(xí)C語(yǔ)言之二維數(shù)組

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言之二維數(shù)組,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • C語(yǔ)言中static和auto用法詳解

    C語(yǔ)言中static和auto用法詳解

    大家好,本篇文章主要講的是C語(yǔ)言中static和auto用法詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下
    2022-01-01
  • 淺析C++中模板的那點(diǎn)事

    淺析C++中模板的那點(diǎn)事

    C++中的模板可分為函數(shù)模板和類(lèi)模板,而把函數(shù)模板的具體化稱(chēng)為模板函數(shù),把類(lèi)模板的具體化成為模板類(lèi)。下面讓我們分別看看什么是函數(shù)模板和類(lèi)模板吧
    2013-09-09

最新評(píng)論