1. 程式人生 > >Sulime Text 3 配置C/C++編譯執行環境

Sulime Text 3 配置C/C++編譯執行環境

開場槽

說起來,大一剛進浙大的時候,有這樣一門“程式設計基礎”課,學的是C。東西倒不是特別難,可是偏偏寫程式碼用的IDE是Dev C++——這麼一款沒有程式碼自動補全,除錯不好用,如今基本沒有企業會用的這麼一款IDE。如果一定要說Dev有什麼好的話……大概就是寫一次程式碼不需要新建一個工程……而且對於大一或者大二不需要建工程的程式碼比較多的情況下還是一個不錯的選擇。只是沒有程式碼自動補全還是太令人難過。 後來偶然之中看到翁愷老師在用Sublime Text講課,發現這個軟體竟然有點厲害。 至於多牛逼:這裡已經有人吹過了 。 另外不得的不說這麼一款編輯器安裝包只有不到10M的大小,開啟它只需要1秒

,甚至你可以隨時在寫程式碼的時候關閉它,不用儲存,因為它有cache。 至於強大的開源外掛的能力更是爽到,你甚至可以自己為自己編寫自定義程式碼補全等各種功能,或者下載全世界的開發者們為它編寫的外掛。

不過既然點了進來,顯然你已經領略到了Sublime text 3的魅力,那就來一起看看到底該怎麼做吧。

編譯執行需要做的事情

有關路徑的設定

主要的編譯思路就是我們用Sublime Text去用命令提示窗進行編譯1 利用命令提示窗,我們可以實現編譯。實際上我們是使用gcc.exe這個檔案進行編譯。 安裝的Dev C++裡面已經為我們準備好了。如果沒有裝Dev C++,可以直接安裝MinGW。 我們到命令提示窗裡面去輸入這個程式碼來編譯一下: —————————————————————— 寫一個簡單的程式碼: 在這裡插入圖片描述

—————————————————————— 我們的檔案放到F的根目錄下。地址為F:\test.c

gcc  F:\test.c -o F:\test

—————————————————————— 然而…… 2 這是因為我們的gcc不在系統認識的PATH裡,所以我們需要新增一個環境變數。 —————————————————————— 右鍵【此電腦】->【屬性】-> 【高階系統設定】 -> 【高階】 -> 【環境變數】 在這裡插入圖片描述 —————————————————————— 我的Dev C++已經裝好了MinGW,找到gcc的位置,新增進PATH裡 在這裡插入圖片描述 在這裡插入圖片描述

—————————————————————— 我們再來試一次: 在這裡插入圖片描述

這樣就可以成功編譯了。 —————————————————————— 完成這步之後,你可能需要重啟一下電腦才能順利地使用Sublime Text的編譯功能 使用快捷鍵Ctrl + Shift + B選擇編譯格式,你就可以看到Sublime Text預提供的編譯選項了(C++) 這個地方如果沒有東西,看一下右下角的檔案格式,你是否把語法設定為了C或者C++。在【工具】 -> 【編譯系統】裡可以選擇“自動”或者是“C++ Single File"。 在這裡插入圖片描述 前者是編譯,帶有"-Run"的是編譯並在Sublime Text裡執行。 —————————————————————— 注意 編譯之前先要儲存檔案 否則因為沒有引數傳入會編譯失敗 我們試一下: 在這裡插入圖片描述 完 全 勝 利 —————————————————————— 但是這麼做又會有個問題,那就是無法輸入,任何有scanf(); 或者是getchar(); 這樣的函式會使得程式卡住。因此我們需要自定義一個編譯方法可以用命令列開啟編譯的檔案,就像Dev C++編譯並執行一樣。

有關自定義編譯的設定

我們可以用start開啟我們編譯的檔案:

start F:\test

看到什麼了嗎?一個框閃了一下馬上就消失了。所以我們可以加個&pause來留下它美麗的瞬間。 整體的思路就是先用命令列傳入檔案的位置資訊和名字資訊執行編譯,開啟cmd來執行對應的exe,並新增一個pause來暫停。 —————————————————————— 在Sublime Text裡點選【首選項】 -> 【瀏覽外掛目錄】開啟資料夾,在…\Packages\User\ 裡新建一個名為"C.sublime-build"的檔案,把下面的程式碼放進去,注意副檔名是".sublime-build"在這裡插入圖片描述 關於JSON我瞭解的不多,就直接輸入程式碼就好了:

{
    "encoding": "utf-8",
    "working_dir": "$file_path",
    "shell_cmd": "g++ -Wall \"$file_name\" -o \"$file_base_name\"",
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "selector": "source.c",

    "variants": 
    [ 
        {   
        "name": "編譯執行",
        "shell_cmd": "g++ -Wall -std=c++0x \"$file\" -o \"$file_base_name\" && \"${file_path}/${file_base_name}\""
        },
        {
        "name": "cmd:執行",
        "shell_cmd": "start cmd /c \"\"${file_path}/${file_base_name}\" & pause \""
        },
        {  
        "name": "cmd:編譯執行",
        "shell_cmd": "g++ -Wall -std=c++0x \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause \""
        }
    ]
}

—————————————————————— 然後儲存,再Ctrl + Shift + B開啟編譯選項,就可以看到之剛才的自定義編譯了。在這裡插入圖片描述 —————————————————————— 簡單說一下四個選項的功能: C:編譯,最後會生成一個 *.exe 檔案 C - 編譯執行 : 編譯,生成一個 *.exe 檔案,然後在Sublime Text裡執行。任何需要輸入的程式都不能選這個選項C - cmd:執行 :直接執行編譯生成的 *.exe 檔案,這個選項不會進行編譯,因為不需要編譯,所以可以立即開啟檔案,一般用於反覆測試的時候。 C - cmd:編譯執行:編譯,然後生成的 *.exe 檔案。就像Dev C++按下F11的時候一樣爽。 —————————————————————— 另外Ctrl + B是直接重複上次選擇的編譯選項進行編譯。

後槽

細心的同學已經發現了,JSON碼裡面的用的明明是g++…… 這個主要是gcc編譯的時候,主函式不寫return 0; 會被出警(悲) 但是後來的g++編譯的時候就會幫你補上這個,就很方便,所以用的是這段指令。 另外C++編譯也是複製貼上這一段程式碼建個新檔案就行,唯一需要修改的地方是

  "selector": "source.c"

需要換成

  "selector": "source.c++"

這樣在選擇語法為C++的時候也會有顯示。