1. 程式人生 > >Sublime Text 3直接編譯執行C/C++程式

Sublime Text 3直接編譯執行C/C++程式

1 工作環境
(1)PC system:Ubuntu12.04LTS。
(2)編輯器版本:Sublime Text 3
2 實現目的
背景就是自己最近開始使用Sublime Text 3編輯程式碼,發現非常好用,也被它強大的外掛功能所吸引。但是,自己在編輯完C/C++程式碼後使用sublime自帶的build並不好用,於是打算自己定製一個單檔案C/C++編譯命令。
3 定製C編譯
(1)在sublime工具欄中,選擇“工具“->“編譯系統“->“新建編譯系統“,會開啟檔名稱為“Untitled.sublime-build“檔案。對其進行編輯,加入下面的程式碼,儲存為“myC.sublime-build“,路徑為預設路徑就可以了。

{
    //"shell_cmd": "make"
    "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\" && \"${file_path}/${file_base_name}\"" } ] }

儲存後,你會在sublime的“工具“->“編譯系統“->“新建編譯系統“下看到myC的build系統。
(2)編輯簡單的C程式碼,進行測試

// 檔名稱:test_c_build.c
#include <stdio.h>

int main(int argc, char const *argv[])
{
    printf("hello world!\n");
    return
0; }

按下組合鍵“Ctrl“+“Shift“+“b“就會彈出編譯命令選擇視窗
選擇“myC-Run“編譯,結果就會出現在sublime下方的控制檯上,如下:
這裡寫圖片描述
4 定製C++編譯
C++的過程與C一樣,只是新建編譯系統時的檔案內容有些不同而已:

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

    "variants": 
    [
        {   
        "name": "Run",
            "shell_cmd": "g++ -Wall -std=c++0x  \"$file\" -o \"$file_base_name\" && \"${file_path}/${file_base_name}\""
        }
    ]
}

5 myC和myC-Run的區別就是myC只編譯,不執行;而myC-Run,編譯後直接執行。
6 解決sublime自帶控制檯無法輸入的問題
因為sublime自帶控制檯無法輸入,所以如果程式用到cin等函式,程式無法執行。在windows系統下需要呼叫cmd.exe,將控制檯交於cmd,所以需要在編譯配置檔案時,新增呼叫cmd的命令。
將上面的myC++.sublime-build修改如下,

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

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

其實就是新增這麼一句話,

&& start cmd /c \"\"${file_path}/${file_base_name}\" & pause \"

儲存後,
編寫示例程式myC++_test_example.cpp。內容如下:

#include <iostream>
#include <string.h>

using namespace std;
int main ()
{
    string str;

    cout << "please enter a string" << endl;
    cin >> str;
    cout << "input string: " << str << endl;

    return 0;
}

按下快捷鍵ctrl+shift+b,執行命令:
這裡寫圖片描述
執行結果:
這裡寫圖片描述
7 目前只支援編譯單檔案,其餘的後續再研究吧。