我正在尝试在 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 failure: 11
。我确信这是因为我的程序需要传递给它的参数。
所以我有两个问题:
如何更改构建系统,以便在运行它时打开终端并在其中运行?
如何在程序运行之前将参数传递给程序?例如,在 Linux 上我会输入
./test hello 20932aa
它将运行良好。如何在 Sublime Text 3 (OS X Yosemite) 上实现相同的效果。
最佳答案
这就是您在构建系统中在 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}",
}
关于c - Sublime Text 3 在 OS X 上使用传递的参数编译并运行(在终端中)C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32408206/