在macOS下使用Visual Studio Code進(jìn)行C/C++開發(fā)

平時(shí)工作做C/C++方面的開發(fā)更多還是在Windows下使用Visual Studio混弥,如果服務(wù)器或者通用組件需要跨平臺(tái)煤辨,Windows上跑通后其他平臺(tái)上編譯發(fā)布称鳞,一般性問題通過Log,Dump什么的基本上也就夠了纤壁;如果的確需要調(diào)試,有VisualGDB的存在也很方便襟雷;但在macOS下使用過IDE性質(zhì)的XCode,CLion,Qt Creator刃滓,也使用過輕量級(jí)的諸如TextMate, Sublime Text,但始終找不到Visual Studio的感覺耸弄,回想起來macOS下使用最多的C/C++開發(fā)環(huán)境居然是CodeRunner咧虎;直到最近這幾天有空折騰了一下Vistual Studio Code,瞬間找到了初戀的感覺!

需求

粗略想了下叙赚,進(jìn)行C/C++開發(fā)老客,我需要的功能大概有:

  1. 格式化
  2. 自動(dòng)完成
  3. Lint
  4. 符號(hào)檢索
  5. 方便的跳轉(zhuǎn)和查看
  6. 可視化調(diào)試(別給我提GDB僚饭,你能苛求一個(gè)連VIM都討厭的人使用GDB?)

而上面這些功能使用Visual Studio Code和必要的插件幾乎可以達(dá)到Vistual Studio 80%的體驗(yàn)

打造

  1. 安裝Visual Studio Code

  2. 安裝cpptools插件震叮,這個(gè)Microsoft出品的插件幾乎囊括了我前面說的所有功能,但他的自動(dòng)完成是Fuzzy的鳍鸵,非常糟糕苇瓣;另外他的Lint功能也僅僅只局限于文件包含;注:該插件安裝完成后會(huì)自動(dòng)安裝一些必要的依賴更新.

  3. 安裝C/C++ Clang插件偿乖,這個(gè)插件只有兩個(gè)功能击罪,自動(dòng)完成診斷Diagnostic(Lint)哲嘲,其使用Clang實(shí)時(shí)分析,什么模板嵌套都能分析媳禁,功能異常強(qiáng)大眠副;

  4. 上面兩個(gè)如果同時(shí)啟用的話會(huì)發(fā)生沖突,并且[C/C++ Clang]插件默認(rèn)不進(jìn)行C++11分析竣稽,點(diǎn)擊[Code]->[首選項(xiàng)]->[用戶設(shè)置]進(jìn)行如下配置:

    "C_Cpp.autocomplete": "Disabled",
    "clang.cxxflags": ["-std=c++11"]
    

注:僅僅需要上面兩個(gè)插件就夠了囱怕,高安裝量的C++ Intellisense插件千萬別裝,它會(huì)和上述兩個(gè)插件沖突毫别,從而出現(xiàn)各種奇怪問題娃弓;

體驗(yàn)

  1. 打開一個(gè)包含有C/C++文件的目錄;

  2. 使用[F1]或[??P]打開命令模式岛宦,選擇[C/Cpp: Edit Configurations]命令台丛,其會(huì)在目錄的.vscode配置目錄下生成一個(gè)c_cpp_properties.json文件,修改Mac節(jié)點(diǎn)下的includePath變量添加C++11跳轉(zhuǎn)支持:

    "includePath": ["/usr/include", "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1"],
    

    注:如果引入其他庫砾肺,將庫路徑按以上方式附在后面即可

  3. 打開命令模式挽霉,選擇[Tasks: Configure Task Runner]命令,其會(huì)在目錄的.vscode配置目錄下生成一個(gè)tasks.json文件变汪,修改配置:

    {
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "0.1.0",
        "command": "clang++",
        "isShellCommand": true,
        "args": ["main.cpp", "-std=c++11", "-g"],
        "showOutput": "always"
    }
    

    注:vscode的Tasks系統(tǒng)其實(shí)就是一個(gè)命令行構(gòu)建工具炼吴;這里我使用clang++編譯命令;簡(jiǎn)單的說疫衩,main.cpp是入口文件硅蹦,你可以修改成你自己的,如果是有多個(gè)入口的測(cè)試項(xiàng)目闷煤,我一般定義為${file}童芹,只是必須選定文件啟動(dòng);另外args中必須添加-g選項(xiàng)鲤拿,否則調(diào)試無效假褪;要支持C++11,必須添加-std=c++11選項(xiàng)近顷;如果還有其他編譯要求生音,將選項(xiàng)附加在后面即可(調(diào)試模式我經(jīng)常使用–save-temps來查看編譯中間文件);之后[?P]然后執(zhí)行[task clang++]窒升,或者直接[??B]就可自動(dòng)編譯.

  4. 打開命令模式缀遍,選擇[Debug: Open launch.json]命令,其會(huì)在目錄的.vscode配置目錄下生成一個(gè)launch.json文件饱须;修改program為:${workspaceRoot}/a.out域醇;如果需要讀取參數(shù),修改args配置;我一般會(huì)習(xí)慣性的加上"preLaunchTask": "clang++"配置譬挚,這樣當(dāng)源代碼發(fā)生改變時(shí)锅铅,啟動(dòng)調(diào)試會(huì)自動(dòng)編譯;

  5. 之后的調(diào)試流程减宣,基本上就和Vistual Studio一樣了盐须,附一張調(diào)試圖:

參考資料

C/C++ for VS Code (Preview)

原始鏈接 版權(quán)聲明:自由轉(zhuǎn)載-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 4.0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市漆腌,隨后出現(xiàn)的幾起案子丰歌,更是在濱河造成了極大的恐慌,老刑警劉巖屉凯,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件立帖,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡悠砚,警方通過查閱死者的電腦和手機(jī)晓勇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灌旧,“玉大人绑咱,你說我怎么就攤上這事∈嗵” “怎么了描融?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)衡蚂。 經(jīng)常有香客問我窿克,道長(zhǎng),這世上最難降的妖魔是什么毛甲? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任年叮,我火速辦了婚禮,結(jié)果婚禮上玻募,老公的妹妹穿的比我還像新娘只损。我一直安慰自己,他們只是感情好七咧,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布跃惫。 她就那樣靜靜地躺著,像睡著了一般艾栋。 火紅的嫁衣襯著肌膚如雪爆存。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天裹粤,我揣著相機(jī)與錄音终蒂,去河邊找鬼蜂林。 笑死遥诉,一個(gè)胖子當(dāng)著我的面吹牛拇泣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播矮锈,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼霉翔,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了苞笨?” 一聲冷哼從身側(cè)響起债朵,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瀑凝,沒想到半個(gè)月后序芦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粤咪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年谚中,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寥枝。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宪塔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出囊拜,到底是詐尸還是另有隱情某筐,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布冠跷,位于F島的核電站南誊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蜜托。R本人自食惡果不足惜弟疆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盗冷。 院中可真熱鬧怠苔,春花似錦、人聲如沸仪糖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锅劝。三九已至攒驰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間故爵,已是汗流浹背玻粪。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人劲室。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓伦仍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親很洋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子充蓝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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