2012-07-14 4 views
6

Myślę, że wielu z was używa lub używało edytora Sublime Text 2. Mam dziwny błąd: nie można budować programów w C++.Nie można zbudować programu w C++ przy użyciu Sublime Text 2

MyC++.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}'"] 
     } 
    ] 
} 

Okazało się, że gdy tablica cmd zawiera dowolną podstawioną lub wyrażenia jak ${file}$file, budowa nie rozpocznie się. W przeciwnym razie się zaczyna.

Nie ma znaczenia z kompilatora. Kiedy wypróbowałem "cmd": ["notify-osd", "$file"], nie zadziałało; ale z "cmd": ["notify-osd", "sometexthere"] zadziałało.

Kompilowanie ręczne działa poprawnie.

Mój program:

#include <iostream> 

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

używam Ubuntu 12.04, 32bit. Wersja edytora Sublime: 2.0.1.

Jeśli nie jest to miejsce, w którym mógłbym zadać to pytanie, proszę powiedz mi, co jest właściwe.

Odpowiedz

7

Edytuj swój plik C++ sublime-build .... działa jak urok.

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

To jest sposób, aby włączyć kompilację C++ 11 na sublime (również ver 3). Dla 12.04 użyj "-std = C++ 0x". –

1

Mogę zapewnić obejście tego problemu: Użyj plików Makefile. Sublime Text 2 może uruchamiać pliki Makefile, aby skompilować dla ciebie C++.

Bardziej prawdopodobne jest uzyskanie lepszej odpowiedzi na to pytanie, zadając pytania na forach Sublime (http://www.sublimetext.com/forum/). Nawet tam prawdopodobnie byliby zainteresowani wiedzą "jak" to nie działa (np. Jeśli nic nie dzieje się po naciśnięciu "Kompilacja", możesz to określić).

+0

To odpowiednie miejsce do zadawania takich pytań. Sublime jest świetnym edytorem i oczywiście interesuje użytkowników StOv. OP miał problemy z prostą kompilacją kodu elementarnego, a "obejście" przez pliki Makefile ... nie zasługuje na znak akceptowanej odpowiedzi. –

+0

@PMarecki I mam nadzieję, że każdy, kto szuka odpowiedzi na to pytanie, będzie miał spory na ich temat, aby sprawdzić zarówno akceptowaną odpowiedź, jak i najlepszą głosowaną odpowiedź. – Thorbear

+0

@PMarecki Myślę, że używanie plików Makefile jest całkowicie rozsądną sugestią. Biorąc pod uwagę, że PO przyjął odpowiedź, wygląda na to, że on też. –

0

Zajęło mi kilka godzin, aby uzyskać kompilację C++ pracującą nad Sublime Text, i nadal mam pewne drobne problemy (np. Fakt, że Sublime Text nie może najwyraźniej wykonać programu w zewnętrznym oknie/konsoli).

Oto mój plik konfiguracyjny:

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

} 

(upewnij się, aby zmienić kodowanie na utf8 jeśli kompilator nie działa)

Również dodać folderu bin MinGW do zmiennej PATH systemu operacyjnego użytkownika (wyszukaj "zmienną środowiskową" w menu Start, a następnie poszukaj zmiennej Ścieżka).