我正在尝试在Sublime Text 3中编译C程序,然后在OS X Yosemite上的终端(通过Sublime Text打开)中运行它。我的构建系统是:
{
"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
。我确定这是因为我的程序需要传递给它的参数。
所以我有两个问题:
如何更改构建系统,以便在运行时打开终端并在那里运行?
如何在程序运行之前将参数传递给程序?例如,在Linux上我会输入./test hello 20932aa
,它会正常运行。如何在Sublime Text 3(OS X Yosemite)上实现相同目的。
答案 0 :(得分: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}",
}