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

準(zhǔn)備工作

  • 安裝vscode盯荤。
  • 安裝vscode的c++擴(kuò)展。
  • 確保安裝clang焕盟。

創(chuàng)建項(xiàng)目

# 創(chuàng)建項(xiàng)目目錄
mkdir projects
cd projects
mkdir helloworld
cd helloworld
# 以當(dāng)前路徑作為工作空間秋秤,打開(kāi)vscode
code .

task.json

task.json文件用于指示vscode構(gòu)建項(xiàng)目。

{
    "version": "2.0.0",
    "tasks": [{
        "label": "Compile", // 任務(wù)名稱脚翘,與launch.json的preLaunchTask相對(duì)應(yīng)
        "command": "g++",   // 要使用的編譯器灼卢,C++用g++
        "args": [
            "${file}",
            "-o",    // 指定輸出文件名,不加該參數(shù)則默認(rèn)輸出a.exe来农,Linux下默認(rèn)a.out
            "${fileDirname}/${fileBasenameNoExtension}",
            "-g",    // 生成和調(diào)試有關(guān)的信息
            "-m64",  // 強(qiáng)制生成64位的程序
            "-Wall", // 開(kāi)啟額外警告
        ], // 編譯的命令鞋真,其實(shí)相當(dāng)于VSC幫你在終端中輸了這些東西
        "type": "process", // process是把預(yù)定義變量和轉(zhuǎn)義解析后直接全部傳給command;shell相當(dāng)于先打開(kāi)shell再輸入命令沃于,所以args還會(huì)經(jīng)過(guò)shell再解析一遍
        "group": {
            "kind": "build",
            "isDefault": true // 不為true時(shí)ctrl shift B就要手動(dòng)選擇了
        },
        "presentation": {
            "echo": true,
            "reveal": "always", // 執(zhí)行任務(wù)時(shí)是否跳轉(zhuǎn)到終端面板涩咖,可以為always,silent繁莹,never檩互。具體參見(jiàn)VSC的文檔,即使設(shè)為never咨演,手動(dòng)點(diǎn)進(jìn)去還是可以看到
            "focus": false,     // 設(shè)為true后可以使執(zhí)行task時(shí)焦點(diǎn)聚集在終端闸昨,但對(duì)編譯C/C++來(lái)說(shuō),設(shè)為true沒(méi)有意義
            "panel": "shared"   // 不同的文件的編譯信息共享一個(gè)終端面板
        },
        "problemMatcher":"$gcc" // 捕捉編譯時(shí)終端里的報(bào)錯(cuò)信息到問(wèn)題面板中薄风,修改代碼后需要重新編譯才會(huì)再次觸發(fā)
    }]
}

launch.json

// https://code.visualstudio.com/docs/cpp/launch-json-reference
{
    "version": "0.2.0",
    "configurations": [{
        "name": "Launch", // 配置名稱零院,將會(huì)在啟動(dòng)配置的下拉菜單中顯示
        "type": "cppdbg", // 配置類型,對(duì)于C/C++可認(rèn)為此處只能是cppdbg村刨,由cpptools提供告抄;不同編程語(yǔ)言不同
        "request": "launch", // 可以為launch(啟動(dòng))或attach(附加)
        "program": "${fileDirname}/${fileBasenameNoExtension}", // 將要進(jìn)行調(diào)試的程序的路徑
        "args": [], // 程序調(diào)試時(shí)傳遞給程序的命令行參數(shù),一般設(shè)為空
        "stopAtEntry": true, // 設(shè)為true時(shí)程序?qū)和T诔绦蛉肟谔幥段喈?dāng)于在main上打斷點(diǎn)
        "cwd": "${workspaceFolder}", // 調(diào)試程序時(shí)的工作目錄打洼,此為工作區(qū)文件夾龄糊;改成${fileDirname}可變?yōu)槲募谀夸?        "environment": [], // 環(huán)境變量
        "externalConsole": false, // 使用單獨(dú)的cmd窗口,與其它IDE一致募疮;為false時(shí)使用內(nèi)置終端
        "internalConsoleOptions": "neverOpen", // 如果不設(shè)為neverOpen炫惩,調(diào)試時(shí)會(huì)跳到“調(diào)試控制臺(tái)”選項(xiàng)卡,你應(yīng)該不需要對(duì)gdb手動(dòng)輸命令吧阿浓?
        "MIMode": "lldb", // 指定連接的調(diào)試器他嚷,可以為gdb或lldb。
        "setupCommands": [
            { // 模板自帶芭毙,好像可以更好地顯示STL容器的內(nèi)容筋蓖,具體作用自行Google
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": false
            }
        ],
        "preLaunchTask": "Compile" // 調(diào)試前執(zhí)行的任務(wù),一般為編譯程序退敦。與tasks.json的label相對(duì)應(yīng)
    }]
}

settings.json

{
    "files.defaultLanguage": "c", // ctrl+N新建文件后默認(rèn)的語(yǔ)言
    "editor.formatOnType": true,  // 輸入分號(hào)(C/C++的語(yǔ)句結(jié)束標(biāo)識(shí))后自動(dòng)格式化當(dāng)前這一行的代碼
    "editor.suggest.snippetsPreventQuickSuggestions": false, // clangd的snippets有很多的跳轉(zhuǎn)點(diǎn)粘咖,不用這個(gè)就必須手動(dòng)觸發(fā)Intellisense了
    "editor.acceptSuggestionOnEnter": "off", // 我個(gè)人的習(xí)慣,按回車時(shí)一定是真正的換行侈百,只有tab才會(huì)接受Intellisense
    // "editor.snippetSuggestions": "top", // (可選)snippets顯示在補(bǔ)全列表頂端瓮下,默認(rèn)是inline

    "code-runner.runInTerminal": true, // 設(shè)置成false會(huì)在“輸出”中輸出,無(wú)法輸入
    "code-runner.executorMap": {
        "c": "gcc '$fileName' -o '$fileNameWithoutExt.exe' -Wall -O2 -m64 -lm -static-libgcc -fexec-charset=GBK -D__USE_MINGW_ANSI_STDIO && &'./$fileNameWithoutExt.exe'",
        "cpp": "g++ '$fileName' -o '$fileNameWithoutExt.exe' -Wall -O2 -m64 -static-libgcc -fexec-charset=GBK && &'./$fileNameWithoutExt.exe'"
        // "c": "gcc $fileName -o $fileNameWithoutExt.exe -Wall -O2 -m64 -lm -static-libgcc -fexec-charset=GBK -D__USE_MINGW_ANSI_STDIO && $dir$fileNameWithoutExt.exe",
        // "cpp": "g++ $fileName -o $fileNameWithoutExt.exe -Wall -O2 -m64 -static-libgcc -fexec-charset=GBK && $dir$fileNameWithoutExt.exe"
    }, // 右鍵run code時(shí)運(yùn)行的命令钝域;未注釋的僅適用于PowerShell(Win10默認(rèn))和pwsh讽坏,文件名中有空格也可以編譯運(yùn)行;注釋掉的適用于cmd(win7默認(rèn))例证、PS和bash路呜,但文件名中有空格時(shí)無(wú)法運(yùn)行
    "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的終端消息拣宰,默認(rèn)false
    "code-runner.ignoreSelection": true,   // 默認(rèn)為false,效果是鼠標(biāo)選中一塊代碼后可以單獨(dú)執(zhí)行烦感,但C是編譯型語(yǔ)言巡社,不適合這樣用
    "code-runner.fileDirectoryAsCwd": true, // 將code runner終端的工作目錄切換到文件目錄再運(yùn)行,對(duì)依賴cwd的程序產(chǎn)生影響手趣;如果為false晌该,executorMap要加cd $dir

    "C_Cpp.clang_format_sortIncludes": true, // 格式化時(shí)調(diào)整include的順序(按字母排序)
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者绿渣。
  • 序言:七十年代末朝群,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子中符,更是在濱河造成了極大的恐慌姜胖,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淀散,死亡現(xiàn)場(chǎng)離奇詭異右莱,居然都是意外死亡蚜锨,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門慢蜓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)亚再,“玉大人,你說(shuō)我怎么就攤上這事晨抡》招” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵耘柱,是天一觀的道長(zhǎng)如捅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)帆谍,這世上最難降的妖魔是什么伪朽? 我笑而不...
    開(kāi)封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任轴咱,我火速辦了婚禮汛蝙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘朴肺。我一直安慰自己窖剑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布戈稿。 她就那樣靜靜地躺著西土,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鞍盗。 梳的紋絲不亂的頭發(fā)上需了,一...
    開(kāi)封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音般甲,去河邊找鬼肋乍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛敷存,可吹牛的內(nèi)容都是我干的墓造。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼锚烦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼觅闽!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起涮俄,我...
    開(kāi)封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蛉拙,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后彻亲,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體孕锄,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡室叉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了硫惕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茧痕。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖恼除,靈堂內(nèi)的尸體忽然破棺而出踪旷,到底是詐尸還是另有隱情,我是刑警寧澤豁辉,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布令野,位于F島的核電站,受9級(jí)特大地震影響徽级,放射性物質(zhì)發(fā)生泄漏气破。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一餐抢、第九天 我趴在偏房一處隱蔽的房頂上張望现使。 院中可真熱鬧,春花似錦旷痕、人聲如沸碳锈。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)售碳。三九已至,卻和暖如春绞呈,著一層夾襖步出監(jiān)牢的瞬間贸人,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工佃声, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留艺智,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓秉溉,卻偏偏與公主長(zhǎng)得像力惯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子召嘶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容