Sublime Text 3 编译和 运行(在终端中)C on OS X 传递参数
Sublime Text 3 compile and run (in terminal) C on OS X with passed arguments
我正在尝试在 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
。我确定这是因为我的程序需要传递给它的参数。
所以我有两个问题:
如何更改构建系统,以便在我 运行 它时打开终端并在其中 运行?
如何将参数传递给它之前的程序 运行s?例如,在 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"
}
]
}
如果您希望您的程序在新终端中打开 window,请使用此构建系统。但是你不能给它传递参数。
{
"shell_cmd": "make ${file_base_name} && open -a Terminal.app ${file_path}/${file_base_name}",
}
我正在尝试在 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
。我确定这是因为我的程序需要传递给它的参数。
所以我有两个问题:
如何更改构建系统,以便在我 运行 它时打开终端并在其中 运行?
如何将参数传递给它之前的程序 运行s?例如,在 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"
}
]
}
如果您希望您的程序在新终端中打开 window,请使用此构建系统。但是你不能给它传递参数。
{
"shell_cmd": "make ${file_base_name} && open -a Terminal.app ${file_path}/${file_base_name}",
}