2012-07-14 3 views
6

Penso che molti di voi stiano usando o usati per usare l'editor di Sublime Text 2. Ho uno strano errore: i programmi C++ non possono essere compilati.Impossibile creare il programma C++ utilizzando Sublime Text 2

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

ho scoperto che quando la matrice cmd contiene alcuna espressione sostituito come ${file} o $file, build non si avvia. Altrimenti inizia.

Non importa dal compilatore. Quando ho provato "cmd": ["notify-osd", "$file"], non ha funzionato; ma con "cmd": ["notify-osd", "sometexthere"] ha funzionato.

La compilazione manuale funziona correttamente.

Il mio programma:

#include <iostream> 

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

io uso Ubuntu 12.04, a 32 bit. Versione di Sublime Editor: 2.0.1.

Se non è il luogo in cui potrei fare questa domanda, per favore dimmi qual è quella giusta.

risposta

7

Modifica il tuo C++ file sublime-build .... funziona come un fascino.

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

Questo è il modo per attivare la compilation C++ 11 su sublime (anche ver 3). Per 12.04 usa "-std = C++ 0x". –

1

Posso fornire una soluzione alternativa a questo problema: Utilizza makefile. Sublime Text 2 può eseguire makefile per compilare C++ per te.

Sarai più propenso a ottenere una risposta migliore a questa domanda chiedendo nei forum di Sublime (http://www.sublimetext.com/forum/). Anche lì probabilmente sarebbero interessati a sapere "come" non funziona (cioè se non succede niente quando si preme "Costruisci", si potrebbe voler specificarlo).

+0

Questo è il posto giusto per porre tali domande. Sublime è un ottimo editor, e naturalmente di interesse per gli utenti di StOv. L'OP ha avuto problemi con la semplice compilazione di codice elementare e "workaround" di makefiles ... non merita il marchio di risposta accettata. –

+0

@PMarecki E speriamo che chiunque cerchi la risposta a questa domanda abbia l'intelligenza per controllare sia la risposta accettata che la risposta più votata. – Thorbear

+0

@PMarecki Penso che l'uso dei makefile sia un suggerimento perfettamente ragionevole. Dato che l'OP ha accettato la risposta, sembra che lo abbia fatto anche lui. –

0

Ci sono volute diverse ore per ottenere la compilazione del C++ su Sublime Text, e ho ancora alcuni problemi (come il fatto che Sublime Text non può eseguire il programma in una finestra/console externe).

Ecco il mio file di configurazione:

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

} 

(assicurarsi di modificare la codifica a utf8 se il compilatore non funziona)

Inoltre, aggiungere cartella bin del MinGW alla variabile PATH del sistema operativo (cercare 'variabile d'ambiente' nel menu di avvio, quindi cercare la variabile Path.