欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

編寫json文件

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

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

Fetching Title#u3bx

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

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

這里會打開vscode設(shè)置項的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è)置項是 C/C++ 擴展的配置,用于指定要排除在項目外的文件。在這個例子中,**/.vscode 和 **/.vs 目錄下的文件將被排除在項目外。
  • "C_Cpp.default.customConfigurationVariables": {}:這個設(shè)置項是 C/C++ 擴展的配置,用于指定自定義的編譯選項。在這個例子中,沒有指定任何自定義編譯選項。
  • "code-runner.runInTerminal": true:這個設(shè)置項是 Code Runner 擴展的配置,用于指定代碼是否在終端中運行。在這個例子中,設(shè)置為 true,即代碼將在終端中運行。
  • "code-runner.saveFileBeforeRun": true:這個設(shè)置項是 Code Runner 的配置,用于指定代碼是否在運行前保存。在這個例子中,設(shè)置為 true,即代碼將在運行前自動保存。
  • "C_Cpp.default.compilerPath": "/usr/bin/clang":這個設(shè)置項是 C/C++ 擴展的配置,用于指定默認的編譯器路徑。在這個例子中,指定為 /usr/bin/clang,即使用 clang 編譯器。
  • "files.autoGuessEncoding": true:這個設(shè)置項用于指定是否自動猜測文件編碼。在這個例子中,設(shè)置為 true,即 Visual Studio Code 將嘗試自動猜測文件編碼。
  • "security.workspace.trust.untrustedFiles": "open":這個設(shè)置項用于指定未受信任的文件的打開方式。在這個例子中,設(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è)置項配置文件,用來設(shè)置一些編譯C/C++程序時的一些設(shè)置選項 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,這個選項包含了頭文件的地址,需要自己設(shè)置一下自己編寫的頭文件的目錄,我比較習(xí)慣直接將頭文件放在工程目錄,就添加"${workspaceFolder}/${workspaceFolderBasename}" ${workspaceFolder}是工作空間名稱變量代表 ${workspaceFolderBasename}是運行程序所在目錄,如果我運行/home/lin/Code/Cgit/hellow/hellow.cpp,這個變量就是hellow 我添加的頭文件目錄就是/home/lin/Code/Cgit/hellow/,我們只需要在項目文件夾中編寫頭文件即可

如果習(xí)慣在項目文件夾中單獨建一個問價夾存放頭文件可以在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"這里對應(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í)行文件的完整路徑。

每次編譯完成都會在項目目錄中生成.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)建并運行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文件設(shè)置了編譯 C/C++ 代碼時配置調(diào)試器,有幾點需要特別注意

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

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

運行hellow.cpp

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

  • 終端輸出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)文章

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

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

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

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

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

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

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

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

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

    QT樹的具體項目實現(xiàn)

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

    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ù)組排序

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

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

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

    C語言中static和auto用法詳解

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

    淺析C++中模板的那點事

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

最新評論