本文主要是貼一些有關於sublime text 3 中C與C++編譯環境的問題
我們知道,目前C/C++流行的編譯器是g++,gcc,然而在我們使用sublime text來編寫 C/C++程式的時候只能在sublime內建的預設的C++ single file的building system中運行,但是卻無法使用者自己輸入,比如scanf語句,cin語句。
所以下面分享一下我自己的方法,來進行C++/C編譯環境設定以及建立我們習慣的那種cmd運行視窗的模式。
首先我們知道gcc/g++在我們電腦的cmd裡面是可以編譯我們的來源程式的:
具體的格式為:
gcc 源檔案名稱 -o 可執行檔名 //C語言
gcc test.c -o test
g++ 源檔案名稱 -o 可執行檔名 //C++語言
g++ test.c -o test
所以我們同樣可以在sublime中building new system來建立我們的C/C++編譯系統
當然在這之前需要確保自己電腦裡面已經安裝MinGW,這個問題自行解決。博主自己是將自己以前安裝dev C++ 時候的的MinGW的路徑設定成環境變數的,效果是一樣滴。
1)C語言:
sublime text下
i. Tool–>build system –> New building System
ii. 在開啟的介面中將預設那幾行刪除
iii. 拷貝下面的代碼粘貼儲存為MyC.sublime.build
{ "working_dir": "$file_path", "cmd": "gcc -Wall \"$file_name\" -o \"$file_base_name\"", "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "selector": "source.c", "variants": [ { "name": "Run", "shell_cmd": "gcc -Wall \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\"" } ]}
就可以啦。
2)同樣的C++語言
sublime text下
i. Tool–>build system –> New building System
ii. 在開啟的介面中將預設那幾行刪除
iii. 拷貝下面的代碼粘貼儲存為MyC++.sublime.build
{ "encoding": "utf-8", "working_dir": "$file_path", "shell_cmd": "g++ -Wall -std=c++11 \"$file_name\" -o \"$file_base_name\"", "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "selector": "source.c++", "variants": [ { "name": "Run", "shell_cmd": "g++ -Wall -std=c++11 \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\"" } ]}
上面兩個設定檔中,
“encoding”代表字元集
“working_dir”代表來源程式路徑
“shell_cmd”代表我們編譯器編譯的指令格式,就是我們的g++ 源檔案 -o 指定檔案
“selector”就是我們的來源程式的語言
這裡的-std=c++11是指定以C++11文法編譯,當然可以不加
儲存之後,下面以C++為例,首先我們Tool –> Build System中選擇我們的MyC++.sublime.build
寫個簡單的程式:
Ctrl+shift+B選擇MyC++進行編譯,再選擇MyC++ run運行
此時自動調出我們的cmd運行框,完成。
接下來當我們在來源程式中輸入中文是再運行時候會發現出現了亂碼
原因就是我們的cmd字元集與我們來源程式的字元集不同,來源程式是utf-8
開啟我們的cmd輸入chcp命令可以查看當前字元集,預設是936
所以我們可以在我們的設定檔中修改,使其支援GBK格式
具體操作就是在設定檔中”shell_cmd”加入-fexec-charset=GBK的語句
{ "encoding": "utf-8", "working_dir": "$file_path", "shell_cmd": "g++ -Wall -std=c++11 -fexec-charset=GBK \"$file_name\" -o \"$file_base_name\"", "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "selector": "source.c++", "variants": [ { "name": "Run", "shell_cmd": "g++ -Wall -std=c++11 -fexec-charset=GBK \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\"" } ]}
儲存
此時在編譯運行我們的代碼:
perfect到這裡我們就可以用sublime這個性感的編輯器來書寫運行我們的C++代碼啦,當然C語言也一樣。