Sublime Text 3でCをコンパイルして実行するにはどうすればいいですか? 質問する

Sublime Text 3でCをコンパイルして実行するにはどうすればいいですか? 質問する

Ubuntu 14.04 上の Sublime Text 3 で C プログラムをコンパイルして実行したいと思います。現在、プログラムは Sublime Text 3 を使用して gcc でコンパイルされ、コマンドが実行されています (以下のコードを参照)。しかし、プログラム実行出力を Sublime Text コンソールにも表示できるかどうか疑問に思っています。

現在、Sublime Text 3でCプログラムをコンパイルするために必要なものは次のとおりです。

c_compile.sublime-build

{
"cmd" : ["gcc", "$file_name", "-o", "${file_base_name}"],
"selector" : "source.c",
"shell":false,
"working_dir" : "$file_path"
}

次のように追加してみました&& ./${file_base_name}:

{
"cmd" : ["gcc", "$file_name", "-o", "${file_base_name}","&&","./${file_base_name}"],
"selector" : "source.c",
"shell":false,
"working_dir" : "$file_path"
}

しかし、次のようなエラーが表示されます:

gcc: error: &&: No such file or directory
[Finished in 0.0s with exit code 1]
[cmd: ['gcc', 'Ex1-6.c', '-o', 'Ex1-6', '&&', './Ex1-6']]
[dir: /home/admin/Desktop/C/book/chap1]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

私が使用している簡単な C プログラムは次のとおりです。

例1-6.c

#include <stdio.h>

main(){
    printf("Hello world");
}

解決策をオンラインで検索しましたが、提案された回答はコンパイルのみを許可するか(この部分はすでに機能しています)、機能しません。このコードを修正して、Sublime Text 3でコンパイルして実行する方法はありますか(可能であれば)。ありがとうございます

user2357112 の提案に従って #1 を編集します:

shellに変更後true

{
"cmd" : ["gcc", "$file_name", "-o", "${file_base_name}","&&","./${file_base_name}"],
"selector" : "source.c",
"shell":true,
"working_dir" : "$file_path"
}

私が得たものはこれです:

gcc: fatal error: no input files
compilation terminated.
[Finished in 0.0s with exit code 4]
[cmd: ['gcc', 'Ex1-6.c', '-o', 'Ex1-6', '&&', './Ex1-6']]
[dir: /home/admin/Desktop/C/book/chap1]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

Eugene K の提案による編集 #2:

プログラムのみを実行するように cmd を変更してみました:

{
"cmd" : ["./${file_base_name}"],
"selector" : "source.c",
"shell":false,
"working_dir" : "$file_path"
}

正常に実行され、いくつかのコードがコンソールに出力されます。

Hello world
[Finished in 0.0s with exit code 12]
[cmd: ['./Ex1-6']]
[dir: /home/amir/Desktop/C/book/chap1]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

これまでのところ、cmd はコンパイルまたは実行のいずれかであり、両方を同時に実行していません。単一のコマンドでコンパイルおよび実行できるように何らかの対策を講じることができれば幸いです。

ベストアンサー1

コマンド全体を 1 つの文字列で書き出してみましたか?

{
"cmd" : ["gcc $file_name -o ${file_base_name} && ./${file_base_name}"],
"selector" : "source.c",
"shell": true,
"working_dir" : "$file_path"
}

私の考えでは (これは半ば推測ですが)、ST3 は最初の引数を「プログラム」として受け取り、他の文字列を「引数」として渡します。https://docs.python.org/2/library/subprocess.html#subprocess.Popen

おすすめ記事