使用Sublime Text2構建功能配置C語言的自動編譯


以前一直使用notepad++作為首選編輯器,不過看到最近很流行sublime text這個東西,試用了一下,他的語法高亮和Snippets都很不錯,以及牛逼的goto anything...

不過在notepad++里面有個自帶的插件NPP Exec,可以自己配置自定義的指令,來實現一些功能,比如我直接配置了gcc的編譯命令,那么就可以不離開編輯器直接編譯當前正在編寫的代碼,這個功能對於寫個小程序和腳本之類的都很方便。

不過在sublime里面確沒找到對應的插件,在它的Tools->build system
下面有一些內置的配置,不過沒有我需要的gcc的配置文件,於是從網上找文檔,嘗試自己寫一個

網上找了半天,只找到一個相關的文檔 http://docs.sublimetext.info/en/latest/reference/build_systems.html

不過這個也講得很簡略,簡單來說,就是需要自己添加一個新的build命令,選擇Build->Build System->New Build System... 來添加一個新的build功能。

sublime現階段所有的配置都是通過文件來實現的,而沒有對應界面,所以。。。看文檔寫配置文件吧。。

按照文檔的說法,sublime的build配置是一個JSon格式的文件,使用.sublime-build作為后綴

首先把最終的配置文件貼一下,然后再詳細解釋

1 {
2     "cmd": ["build_gcc","$file"],
3     "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
4     "selector": "source.c"
5 }

上面第2行是必須要有的一行,表示用於執行的命令,一般第一個表示執行的命令,之后的每個參數使用引號括起來作為單獨的一項(注意沒有空格),其中的$file表示當前激活的文件的全路徑和文件全名

 剩下兩行都是可選的,第3行的作用是捕獲上面命令的輸出,后面是需要捕獲的內容,使用Perl格式的正則表達式,如果沒有這一句的話,編輯器會執行命令,但是什么都不會輸出

第4行 是選擇器,意思是當讓編輯器自動選擇編譯方案時候,這個對應於什么類型的文件

 

至於cmd里面的build_gcc,是因為我想在編譯成功之后,運行一下這個文件,於是寫了一個build_gcc.bat的批處理,放到path路徑里面,批處理是這樣寫的

1 del /F /Q temp4gcc.exe
2 gcc -std=c99 -o temp4gcc.exe %1
3 temp4gcc.exe

 

不過在sublime運行之后,提示錯誤,看起來這個cmd是不可以使用批處理了,所以又用C簡單寫了一個程序,內容基本上和批處理相同

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main(int argc, char const *argv[])
 5 {
 6     if (argc != 2){
 7         printf("Usage:build_gcc filename\n");
 8         return 0;        
 9     }
10     char exec[200] = "gcc -std=c99 -o E:\\work\\temp4gcc.exe ";
11     strcat(exec,argv[1]);
12     system("del /F /Q E:\\work\\temp4gcc.exe");
13     system(exec);
14     system("E:\\work\\temp4gcc.exe");
15     return 0;
16 }

不過這個寫的還是不嚴謹,功能也不強,不過管他呢,對我來說,功能夠用就好

把這個小程序編譯為build_gcc.exe,放到path里面,現在在在sublime選擇剛才的新加的命令,然后運行 Tools->Build 或者 Ctrl+B

ok,程序結果出來了,不過貌似有些多余的東西。。。。

sublime在捕獲輸出的時候,如果發現輸出內容編碼不爽,會直接報一個錯。。。

因為這個構建功能實際上是由一個exec.py來實現的
,所以簡單修改一下這個文件來去掉這個討厭的輸出

首先把安裝目錄下的Data\Packages\Default\exec.py復制到Data\Packages\User下面

然后在文件中搜索 Decode error - output not 這句,然后整行刪掉,然后使用python -O -m py_compile exec.py來重新編譯一下,

再在sublime編譯一下那個C的小程序。ok

不過這個還是有點小缺點的,就是現在還不支持輸入內容,也就是說沒法交互,不過我只是把它定義在“運行小程序”上,這個也不是什么大問題,如果需要交互調試之類的有更強大的IDE可以選用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM