2015-09-05 48 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}", 
}