web-dev-qa-db-ja.com

崇高なテキスト3でCをコンパイルして実行するには?

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

以下は、崇高なテキストを使用してCプログラムをコンパイルするために現在持っているものです3

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プログラムは次のとおりです。

Ex1-6.c

#include <stdio.h>

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

解決策をオンラインで検索しましたが、提案された答えはコンパイルのみを許可するか(この部分はすでに機能しています)、または機能していません。崇高なテキスト3(可能であれば)でコンパイルおよび実行するために、このコードを修正する方法についての考えありがとうございました

ser2357112が提案する#1を編集:

Shelltrueに変更した後:

{
"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はコンパイルまたは実行されますが、両方を一緒に実行することはありません。単一のコマンドでコンパイルして実行するために何かできることを願っています。

37
CMPS

単一の文字列でコマンド全体を書き出すだけでしたか?

{
"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

43
erbridge

[実行]メニューコマンドを実装する崇高なビルドシステムの場合:

  • [ツール]-> [ビルドシステム]-> [新しいビルドシステム]に移動します。

または

  • ファイルを作成~/.config/sublime-text-3/Packages/User/GCC.sublime-build

そしてこれを挿入:

{
"Shell_cmd" : "gcc $file_name -o ${file_base_name}",
"working_dir" : "$file_path",
"variants":
  [
    {
      "name": "Run",
      "Shell_cmd": "gcc $file_name -o ${file_base_name} && ${file_path}/${file_base_name}"
    }
  ]
}

*この例ではGCCコンパイラを使用しています。 gccをお好みのコンパイラに置き換えてください。

26
Gonen

Sublime TextでCのコードをコンパイルし、値または文字列を出力できますが、それはしないユーザーからの入力を受け入れます。 (私が知るまで...コンパイルについては確信していますが、与えられた入力からの出力については確信していません。)Windowsを使用している場合、Sublime TextおよびGCCコンパイラーの環境変数を設定する必要があります。

3
rock321987

崇高の最新ビルドでは、二重引用符の代わりに直接コマンドを使用できます。ビルドシステム用に以下のコードを試してください

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

指示は「アイスメロン」の投稿に基づいています。投稿へのリンク:

how-do-i-compile-and-run-a-c-program-in-sublime-text-2

以下のリンクを使用して、OSで環境変数を設定する方法を確認してください。

c_environment_setup

以下の手順は、Windows 8.1システムおよびSublime Text 3-ビルド3065でテストされました。

1)MinGWをインストールします。 2)「PATH環境変数」の「MinGW\bin」にパスを追加します。

「システムのプロパティ->詳細設定->環境」変数と「PATH」変数を更新します。

3)次に、「コマンドプロンプト」で次のコマンドを実行して、PATH環境変数を確認します。

echo %path%

4)新しいビルドシステムをSublime Textに追加します。

以下のコードの私のバージョン( "C.sublime-build")。

コードへのリンク:

C.sublime-build

// Put this file here:
// "C:\Users\[User Name]\AppData\Roaming\Sublime Text 3\Packages\User"
// Use "Ctrl+B" to Build and "Crtl+Shift+B" to Run the project.
// OR use "Tools -> Build System -> New Build System..." and put the code there.

{
    "cmd" : ["gcc", "$file_name", "-o", "${file_base_name}.exe"],

    // Doesn't work, sublime text 3, Windows 8.1    
    // "cmd" : ["gcc $file_name -o ${file_base_name}"],

    "selector" : "source.c",
    "Shell": true,
    "working_dir" : "$file_path",

    // You could add path to your gcc compiler this and don't add path to your "PATH environment variable"
    // "path" : "C:\\MinGW\\bin"

    "variants" : [

        { "name": "Run",
          "cmd" : ["${file_base_name}.exe"]
        }
    ]
}
1
Maks

最善の方法は、プロジェクトにMakefileを使用することです。ST3は、プロジェクトのビルドシステムを自動的に検出します。例えば。 Shift + ctrl/cmd + Bを押すと、次のように表示されます。 Make

1

プロジェクトフォラーでrun.shという名前のシェルスクリプトを記述してください。

#!/bin/bash
./YOUR_EXECUTIVE_FILE
...AND OTHER THING

Build Systemを作成して、コンパイルして実行します。

{
      "Shell_cmd": "make all && ./run.sh"
}

$chmod +x run.shを忘れないでください

一つのことをして、うまくやる:)

0
Lw Cui

Linuxで崇高なテキストを使用していますか?私は同じ問題を抱えており、解決しました!これが私のc.sublime-buildです:

{
 "Shell_cmd" : "gcc $file_name -o $file_base_name && ./$file_base_name", 
 "selector" : "source.c",
 "Shell":true,
 "working_dir" : "$file_path"
}
0
DucNgo

CまたはC++言語をコーディングする場合。ファイルを使用して入力できるので、私たちは幸運だと思います。それはとても便利で明確です。私はよくそうします。これはそれを実装するための引数です:

{
freopen("inputfile", "r", stdin);
}

Inputfileはソースコードファイルと同じディレクトリになければならないことに注意してください。rは読み取り専用です。

0
Viet Dung

Sublime Text 3 ....で上記のコードをこれに変更してみてください。「start」の追加に注意してください。

「バリアント」:[

    { "name": "Run",
      "cmd" : ["start", "${file_base_name}.exe"]
    } 
0
Neil

Sublime Text 3を使用してWindows 10マシン上で私のために働いたコード

 {
 "cmd" : "gcc $file_name -o ${file_base_name}",
 "selector" : "source.c",
 "Shell" : true,
 "working_dir" : "$file_path",
 "variants":
    [
     {
      "name": "Run",
      "cmd": "${file_base_name}"
     }
   ]
}
0
thebluebloo