最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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
#設(shè)置權(quán)限,將lin改為你的用戶名
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)擊拓展,安裝幾個基本的插件:

  • 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文件,來引導(dǎo)vscode編譯程序了。

編寫json文件

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

編寫完的json文件可以在這個網(wǎng)站查詢是否有效

Fetching Title#u3bx

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

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

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

編寫編譯json文件

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

如果習(xí)慣在項(xiàng)目文件夾中單獨(dú)建一個問價(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文件會生成.exe.out文件,linux我們就選擇.out文件,這里需要修改的是"args"這里對應(yīng)的是gcc或g++編譯指令。 我們這里設(shè)置的是

"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í)行文件的完整路徑。

每次編譯完成都會在項(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++ 代碼時配置調(diào)試器,有幾點(diǎn)需要特別注意

  • "preLaunchTask"名稱一定要與tasks.json文件中的lable一致,這將影響調(diào)試時是否能找到對應(yīng)的調(diào)試器
  • "cwd"用于指定調(diào)試器的當(dāng)前工作目錄,要設(shè)置成你的項(xiàng)目目錄,不然讀取C++讀取文件的時候相對路徑會出現(xià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è)欄中帶有小蟲子圖標(biāo)的“運(yùn)行和調(diào)試”
  • 選擇”debug C++“,這里的名稱是在launch.json中的"name"設(shè)置的找到對應(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • QT實(shí)現(xiàn)定時關(guān)閉消息提示框

    QT實(shí)現(xiàn)定時關(guān)閉消息提示框

    這篇文章主要介紹了軟件利用Qt簡單實(shí)現(xiàn)消息提示框可定時自動關(guān)閉,文中的示例代碼講解詳細(xì),對我們;了解QT有一定的幫助,感興趣的可以學(xué)習(xí)一下
    2022-01-01
  • C++?LeetCode0547題解省份數(shù)量圖的連通分量

    C++?LeetCode0547題解省份數(shù)量圖的連通分量

    這篇文章主要為大家介紹了C++?LeetCode0547題解省份數(shù)量圖的連通分量示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • C++不使用變量求字符串長度strlen函數(shù)的實(shí)現(xiàn)方法

    C++不使用變量求字符串長度strlen函數(shù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了C++不使用變量求字符串長度strlen函數(shù)的實(shí)現(xiàn)方法,實(shí)例分析了strlen函數(shù)的實(shí)現(xiàn)原理與不使用變量求字符串長度的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • C/C++?Qt?Tree與Tab組件實(shí)現(xiàn)分頁菜單功能

    C/C++?Qt?Tree與Tab組件實(shí)現(xiàn)分頁菜單功能

    這篇文章主要介紹了C/C++?Qt?Tree與Tab組件實(shí)現(xiàn)分頁菜單功能,實(shí)現(xiàn)一個類似于樹形菜單欄的功能,當(dāng)用戶點(diǎn)擊菜單欄中的選項(xiàng)時則會跳轉(zhuǎn)到不同的頁面上,本文簡單給大家分享實(shí)現(xiàn)代碼,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • 最新VScode C/C++ 環(huán)境配置的詳細(xì)教程

    最新VScode C/C++ 環(huán)境配置的詳細(xì)教程

    這篇文章主要介紹了最新VScode C/C++ 環(huán)境配置的詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • C++ Cmake的構(gòu)建靜態(tài)庫和動態(tài)庫詳解

    C++ Cmake的構(gòu)建靜態(tài)庫和動態(tài)庫詳解

    這篇文章主要為大家詳細(xì)介紹了C++ Cmake的構(gòu)建靜態(tài)庫和動態(tài)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C語言實(shí)現(xiàn)貪吃蛇游戲代碼

    C語言實(shí)現(xiàn)貪吃蛇游戲代碼

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)貪吃蛇游戲代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • C++將txt文件內(nèi)容保存到數(shù)組的方法

    C++將txt文件內(nèi)容保存到數(shù)組的方法

    今天小編就為大家分享一篇C++將txt文件內(nèi)容保存到數(shù)組的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • C語言陷阱與缺陷之?dāng)?shù)組越界訪問詳解

    C語言陷阱與缺陷之?dāng)?shù)組越界訪問詳解

    這篇文章主要為大家詳細(xì)介紹了C語言的數(shù)組越界訪問,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 詳細(xì)分析Android中實(shí)現(xiàn)Zygote的源碼

    詳細(xì)分析Android中實(shí)現(xiàn)Zygote的源碼

    這篇文章主要介紹了詳細(xì)分析Android中實(shí)現(xiàn)Zygote的源碼,包括底層的C/C++代碼以及Java代碼部分入口,需要的朋友可以參考下
    2015-07-07

最新評論

南和县| 山阳县| 聂荣县| 平谷区| 山丹县| 鸡东县| 晋州市| 故城县| 涞源县| 元谋县| 丹寨县| 石林| 于田县| 武定县| 龙口市| 富锦市| 司法| 通山县| 荃湾区| 义马市| 军事| 永川市| 滨州市| 龙里县| 汤原县| 琼海市| 东海县| 屯昌县| 曲麻莱县| 紫云| 南昌市| 衡东县| 乌恰县| 辽中县| 明溪县| 鲁甸县| 岢岚县| 句容市| 武平县| 黎川县| 龙南县|