2012-07-14 10 views
6

あなたの多くがサブライムテキスト2エディタを使用していると思います。私は奇妙なエラーがあります:C + +のプログラムを構築することはできません。サブライムテキスト2を使用してC++プログラムをビルドできない

マイC++.sublime-build

{ 
    "cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}"], 
    "working_dir": "${file_path}", 
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 
    "selector": "source.c, source.c++", 

    "variants": 
    [ 
     { 
      "name": "Run", 
      "cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"] 
     } 
    ] 
} 

私はcmd配列が${file}または$file好きな置換表現が含まれている場合、ビルドが起動しないことがわかりました。それ以外の場合は開始します。

コンパイラからは関係ありません。私が"cmd": ["notify-osd", "$file"]を試したときにうまくいかなかった。しかし"cmd": ["notify-osd", "sometexthere"]でそれは働いた。

右手でコンパイルすると正しく動作します。

私のプログラム:

#include <iostream> 

int main() { 
    std::cout << "Hello World"; 
} 

私はUbuntuの12.04、32ビットを使用します。サブライムエディタのバージョン:2.0.1。

私はこの質問をすることができる場所ではない場合は、何が正しいか教えてください。

答えて

7

あなたのC++。sublime-buildファイルを編集してください....魅力的です。

{ 
    "cmd": ["g++", "-Wall", "-Wextra", "-pedantic", "-std=c++11", "${file}", "-o", "${file_path}/${file_base_name}"], 
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 
    "working_dir": "${file_path}", 
    "selector": "source.c, source.c++", 

    "variants": 
    [ 
     { 
      "name": "Run", 
      "cmd": ["bash", "-c", "g++ -Wall -Wextra -pedantic -std=c++11 '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"] 
     } 
    ] 
} 
+0

これは、C++ 11のコンパイルを崇高で(またver3)有効にする方法です。 12.04では "-std = C++ 0x"を使用します。 –

1

私はこの問題を回避するための解決策を提供できます:makefileを使用してください。崇高なテキスト2はあなたのためにC++をコンパイルするためにmakefileを走らせることができます。

この質問には、Sublimeフォーラム(http://www.sublimetext.com/forum/)で質問すると、より良い回答が得られる可能性が高くなります。 彼らはおそらく、 "どのように"うまく動作しないか(つまり、 "Build"を押しても何も起こらない場合は、それを指定することができます)を知ることに興味があるでしょう。

+0

これは、このような質問をするのに適した場所です。 Sublimeは素晴らしいエディタであり、当然StOvユーザーにとって興味深いものです。 OPは基本コードの単純なコンパイルに問題があり、メイクファイルによる "回避策"は...受け入れられた答えのマークに値するものではありません。 –

+0

@PMareckiそして、うまくいけば、この質問への答えを探している人は、受け入れられた答えと一番上の投票された答えの両方をチェックする知恵があります。 – Thorbear

+0

@PMarecki私はmakefileを使うことは完全に合理的な提案だと思います。 OPが答えを受け入れることを考えれば、彼もそうだったようだ。 –

0

サブライムテキストでのC++コンパイルの作業に数時間かかりましたが、サブライムテキストが外部ウィンドウ/コンソールでプログラムを実行できないというような小さな問題もあります。

ここに私の設定ファイルです:

{ 
"cmd": ["C:\\MinGW\\bin\\mingw32-g++.exe", "-Wall", "-time", "$file", "-o", "$file_base_name"], 

"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 

"working_dir": "${project_path:${folder}}", 

"selector": "source.c", 

"shell": true, 

"encoding": "latin1" 

} 

は(コンパイラが動作しない場合はUTF8にエンコーディングを変更してください)

また、お使いのOSのPATH変数にMinGWののbinフォルダを追加(スタートメニューの「環境変数」を参照し、Path変数を探します)。

関連する問題