Sublime深度定制:編譯和運行 C/C++/Java 項目

不想當(dāng)將軍的士兵不是好士兵,不能管理項目的編輯器不是好編輯器鲤看!Sublime 作為一款優(yōu)秀的編輯器违柏,其項目管理功能自然也不能弱,管理和編譯項目自然不在話下证逻。

然而令我感到奇怪的是乐埠,我在網(wǎng)上瀏覽了 N 多 Sublime 技術(shù)帖,發(fā)現(xiàn)幾乎全是在談?wù)摼庉嫾记汕羝蟆⒉寮筛馈⑵つw等等,對于至關(guān)重要的項目管理功能卻鮮有人提及龙宏,今天在下就盡綿薄之力科普一下這部分內(nèi)容棵逊。

如果你符合以下情況之一,那么建議你閱讀這篇文章:

  1. 只用 Sublime 編輯過單文件银酗,并沒有體驗過項目管理功能辆影;
  2. 用過 Sublime 的項目管理功能徒像,但也僅限于把文件夾拖到左邊欄中;
  3. 經(jīng)常使用 Sublime 編寫代碼蛙讥,但一遇到編譯锯蛀、運行等問題就頭疼,只能切回到 IDE 上去键菱。

本文以 編譯和運行一個簡單的 C++ helloworld 項目 為例來介紹 Sublime 的項目管理功能谬墙。

1. 準備:創(chuàng)建項目目錄

  • 在桌面上新建一個空目錄hello,然后進入目錄并新建 3 個文件:hello.h,hello.cpp,main.cpp经备,內(nèi)容分別如下:

    /* ---------- hello.h ---------- */
    void hello();
    
    /* ---------- hello.cpp ---------- */
    #include <iostream>
    #include "hello.h"
    
    void hello(){
        std::cout<<"hello world"<<std::endl;
    }
    
    /* ---------- main.cpp ---------- */
    #include "hello.h"
    
    int main()
    {
        hello();
        return 0;
    }
    

    這是一個頭文件與Cpp文件分離的最簡單的 C++ 項目拭抬,也就是我們的項目目錄了。

  • 打開 Sublime Text侵蒙,選擇菜單Project->New Workspace for Project造虎,創(chuàng)建一個全新的 Sublime 窗口(也可以使用快捷鍵Ctrl+Shift+N)

  • hello目錄拖進 Sublime 窗口,這時hello目錄將立即顯示在 Sublime 的左側(cè)邊欄中纷闺。如果不顯示算凿,請選擇菜單View->Side Bar->Show Side Bar調(diào)出 Side Bar(也可以快捷鍵 ctrl+k,ctrl+b)。效果如圖所示:

    拖入文件夾后

2. 創(chuàng)建 Sublime 項目

  • Ctrl+Shift+P打開命令面板犁功,輸入projsave氓轰,回車保存項目,命名為hello浸卦,保存在項目目錄即可

  • OK署鸡,創(chuàng)建項目就是這么簡單

    保存項目

3. 項目管理--小試牛刀

  • Ctrl+Shift+P打開命令面板,輸入projedit并回車限嫌,進入項目管理文件(其實就是剛才創(chuàng)建的hello.sublime-project文件)靴庆。會看到如下內(nèi)容:

    {
        "folders":
        [
            {
                "path": "."
            }
        ]
    }
    

    其中的"path": "."是當(dāng)前項目目錄的相對本文件的路徑。

  • 我們在"path": "."之后追加一行內(nèi)容:"name": "我的第一個C++項目",怒医,保存炉抒,會發(fā)現(xiàn)左側(cè)欄的目錄名變了,如下圖:

    目錄名稱變了

    如果保存彈出錯誤稚叹,請確保你在"path":"."的末尾寫了英文逗號焰薄。
    目錄名稱變成中文只是為了方便觀看,實際目錄名稱仍然是hello扒袖,你可以去桌面檢查一下塞茅。

  • 現(xiàn)在你看到目錄里面有個hello.sublime-project,這跟我們的代碼文件無關(guān)僚稿,我們不希望看到它,但又不能刪除蟀伸,否則項目就沒了蚀同,怎么辦呢缅刽?請接著剛才的行后面再追加一行:"file_exclude_patterns": ["*.sublime-project"],,保存后hello.sublime-project立即消失蠢络,世界清凈了衰猛。

    但不用擔(dān)心,它只是隱藏了而已刹孔,打開hello目錄還能找到它啡省。到現(xiàn)在為止,我們的項目管理文件是這樣的:

    {
        "folders":
        [
            {
                "path": ".",
                "name": "我的第一個C++項目",
                "file_exclude_patterns": ["*.sublime-project"],
            }
        ]
    }
    

    "file_exclude_patterns"用于排除不想看到的文件髓霞,可想而知還會有"file_include_patterns"用于指定想看到的文件卦睹,更多詳細信息可點擊查看文末鏈接。

4. 編譯和運行項目

  • 編譯和運行項目算是項目管理的重頭戲了方库,這里需要用到 Sublime 的 build system结序。很多人用 Sublime 編譯和運行過單個文件,甚至能夠自己創(chuàng)建 build system纵潦,但編譯項目略有不同徐鹤。

  • 項目可以像單文件一樣創(chuàng)建 build system 嗎?理論上可以邀层,但我們一般不這樣做返敬,因為每個項目都有自己的上下文環(huán)境,所以很難寫出一個對每個項目都適用的 build system寥院。我們傾向于在項目管理文件中為每個項目分別創(chuàng)建 build system劲赠。

  • 編譯項目之前,我們首先在hello目錄下新建一個build目錄只磷,存放編譯后的二進制文件经磅。這一步并非必要,但是為了規(guī)范化建議采用钮追。

  • 我們在項目的"folders":[]字段后加上一個"build_systems"字段预厌,創(chuàng)建一個 build system C++ Project。當(dāng)前項目管理文件完整內(nèi)容如下:

    {
        "folders":
        [
            {
                "path": ".",
                "name": "我的第一個C++項目",
                "file_exclude_patterns": ["*.sublime-project"],
            }
        ],
        "build_systems":
        [
            {
                "name": "C++ Project",
                "shell_cmd": "g++ hello.h hello.cpp main.cpp -o .\\build\\main.exe && .\\build\\main.exe",
                "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
                "working_dir": "$folder"
            }
        ]
    }
    

    這里需要注意的是:想要編譯 C++ 代碼元媚,你需要先安裝一款編譯器轧叽。推薦使用免費的 gcc ,搜索安裝 MinGW-win 即可刊棕。

    想要了解上述每個字段的具體含義炭晒,可以參考文末鏈接。

  • 現(xiàn)在甥角,你在項目的任意一個文件中按下快捷鍵Ctrl+B网严,都會看到我們剛剛創(chuàng)建的C++ Project這個 build system,如下圖:

    選擇我們創(chuàng)建的 C++ Project
  • 選擇我們創(chuàng)建的C++ Project并回車嗤无,會看到程序編譯并正確執(zhí)行震束,運行結(jié)果自動在下方彈出:

    運行結(jié)果

5. 項目的進一步定制

到此為止怜庸,關(guān)于項目的基本功能已經(jīng)全部介紹了,還有以下幾點需要提示:

  • 當(dāng)你需要新建另一個項目的時候垢村,一定要先Ctrl+Shift+N創(chuàng)建一個全新窗口割疾,否則所有拖進來的目錄都會更改當(dāng)前項目。
  • 每個項目可以包含多個目錄嘉栓,但最好只有一個代碼目錄宏榕,否則你在不同目錄下運行 build 命令可能會產(chǎn)生混淆。

好了侵佃,最后一步優(yōu)化:我們不需要看到build目錄麻昼,因為它里面都是二進制文件。我們將build目錄加入排除目錄中:"folder_exclude_patterns": ["build"],趣钱。時刻保持代碼目錄干凈整潔有利于提高我們的工作效率涌献。

時刻保持代碼目錄干凈整潔

最后,完整的項目配置文件hello.sublime-project如下:

{
    "folders":
    [
        {
            "path": ".",
            "name": "我的第一個C++項目",
            "file_exclude_patterns": ["*.sublime-project"],
            "folder_exclude_patterns": ["build"],
        }
    ],
    "build_systems":
    [
        {
            "name": "C++ Project",
            "shell_cmd": "g++ hello.h hello.cpp main.cpp -o .\\build\\main.exe && .\\build\\main.exe",
            "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
            "working_dir": "$folder"
        }
    ]
}

6. 閱讀官方幫助文檔

7. 相關(guān)話題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末首有,一起剝皮案震驚了整個濱河市燕垃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌井联,老刑警劉巖卜壕,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異烙常,居然都是意外死亡轴捎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門蚕脏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侦副,“玉大人,你說我怎么就攤上這事驼鞭∏匮保” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵挣棕,是天一觀的道長译隘。 經(jīng)常有香客問我,道長洛心,這世上最難降的妖魔是什么固耘? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮词身,結(jié)果婚禮上厅目,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好损敷,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布户辫。 她就那樣靜靜地躺著,像睡著了一般嗤锉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上墓塌,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天瘟忱,我揣著相機與錄音,去河邊找鬼苫幢。 笑死访诱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的韩肝。 我是一名探鬼主播触菜,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哀峻!你這毒婦竟也來了涡相?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤剩蟀,失蹤者是張志新(化名)和其女友劉穎催蝗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體育特,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡丙号,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缰冤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犬缨。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖棉浸,靈堂內(nèi)的尸體忽然破棺而出怀薛,到底是詐尸還是另有隱情,我是刑警寧澤涮拗,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布乾戏,位于F島的核電站,受9級特大地震影響三热,放射性物質(zhì)發(fā)生泄漏鼓择。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一就漾、第九天 我趴在偏房一處隱蔽的房頂上張望呐能。 院中可真熱鬧,春花似錦、人聲如沸摆出。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽偎漫。三九已至爷恳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間象踊,已是汗流浹背温亲。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杯矩,地道東北人栈虚。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像史隆,于是被迫代替她去往敵國和親魂务。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理泌射,服務(wù)發(fā)現(xiàn)粘姜,斷路器,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 文章摘要1、 c纯陨、c++項目的創(chuàng)建2坛芽、添加C、C++項目依賴庫4翼抠、配置Gradle咙轩,編譯lib so庫 英文文獻 ...
    Android那些事兒閱讀 12,655評論 0 54
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,071評論 25 707
  • 我就是想表達下!我對戰(zhàn)狼2的喜愛阴颖!沒有時間三刷活喊,索性一次性買三張票。當(dāng)作自己心情的表達吧量愧。 另外钾菊!吳京很帥。本人男...
    懶懶的藍閱讀 232評論 0 0
  • 發(fā)光驢子閱讀 1,147評論 0 0