平時(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ā)老客,我需要的功能大概有:
- 格式化
- 自動(dòng)完成
- Lint
- 符號(hào)檢索
- 方便的跳轉(zhuǎn)和查看
- 可視化調(diào)試(別給我提GDB僚饭,你能苛求一個(gè)連VIM都討厭的人使用GDB?)
而上面這些功能使用Visual Studio Code和必要的插件幾乎可以達(dá)到Vistual Studio 80%的體驗(yàn)
打造
安裝cpptools插件震叮,這個(gè)Microsoft出品的插件幾乎囊括了我前面說的所有功能,但他的自動(dòng)完成是Fuzzy的鳍鸵,非常糟糕苇瓣;另外他的Lint功能也僅僅只局限于文件包含;注:該插件安裝完成后會(huì)自動(dòng)安裝一些必要的依賴更新.
安裝C/C++ Clang插件偿乖,這個(gè)插件只有兩個(gè)功能击罪,自動(dòng)完成和診斷Diagnostic(Lint)哲嘲,其使用Clang實(shí)時(shí)分析,什么模板嵌套都能分析媳禁,功能異常強(qiáng)大眠副;
-
上面兩個(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)
打開一個(gè)包含有C/C++文件的目錄;
-
使用[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"],
注:如果引入其他庫砾肺,將庫路徑按以上方式附在后面即可
-
打開命令模式挽霉,選擇[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)編譯.
打開命令模式缀遍,選擇[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)編譯;
之后的調(diào)試流程减宣,基本上就和Vistual Studio一樣了盐须,附一張調(diào)試圖:
參考資料
原始鏈接 版權(quán)聲明:自由轉(zhuǎn)載-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 4.0