2015-09-05 88 views
2

我想在Sublime Text 3中編譯C程序,然後在OS X上的終端(通過Sublime Text打開)中運行它優勝美地。我的建立系統是:Sublime Text 3在OS X上編譯並運行(在終端中)使用傳遞參數的OS X上的C

{ 
    "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}"], 
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 
    "working_dir": "${file_path}", 
    "selector": "source.c", 

    "variants": 
    [ 
     { 
     "name": "Run", 
     "cmd": ["bash", "-c", "gcc '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"] 
     } 
    ] 
} 

當我建立,例如,test.c,它編譯好。當我運行程序時,我得到這個:bash: line 1: 916 Segmentation fault: 11。我確定這是因爲我的程序需要傳遞給它的參數。

所以我有兩個問題:

  1. 我怎樣才能改變構建系統,這樣,當我運行它,它開闢了終端,並在那裏運行?

  2. 如何在運行之前將參數傳遞給程序?例如,在Linux上,我會輸入./test hello 20932aa,它會正常運行。如何在崇高文本3(OS X優勝美地)上實現同樣的效果。

+1

OS X也有終端。如果你願意,你可以使用它。 – dietbacon

+0

是的,我知道,但我希望Sublime Text在構建代碼時將其打開。這是我不得不做的一個額外步驟。 –

+0

我不知道你是否可以在每次運行中傳遞一個不同的參數,但是在與上面相同的構建文件中,可以指定一個參數,例如「在最後一行(最後一個cmd)中可以編寫:」cmd 「:[」bash「,」-c「,」gcc'$ {file}'-o'$ {file_path}/$ {file_base_name}'&&'$ {file_path}/$ {file_base_name} hello 20932aa'「]。 –

回答

1

這是編譯系統中編譯和運行ST3中的C代碼所需的全部內容。只需將您的參數替換爲arg1 arg2 arg3並保存您的編譯系統,然後像往常一樣在您的C程序上使用Tools -> Build

&&運算符允許您在運算符後執行另一個"shell_cmd"(shell命令)。

{ 
    "shell_cmd": "make ${file_base_name} && ./${file_base_name} arg1 arg2 arg3" 
} 

另外,這裏是一個所有的鐘聲和口哨製造系統。

{ 
    "shell_cmd" : "gcc $file_name -o ${file_base_name}", 
    "working_dir" : "$file_path", 
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 
    "variants": 
    [ 
     { 
      "name": "Run", 
      "shell_cmd": "gcc $file_name -o ${file_base_name} && ${file_path}/${file_base_name} arg1 arg2 arg3" 
     } 
    ] 
} 

如果您希望程序在新的終端窗口中打開,請使用此構建系統。儘管如此,你將無法傳遞參數。

{ 
    "shell_cmd": "make ${file_base_name} && open -a Terminal.app ${file_path}/${file_base_name}", 
}