2016-05-09 66 views
5

So che possiamo compilare il programma come C++ usando il compilatore g ++. Ma il compilatore g ++ ha come valore predefinito 98 versione. Per eseguirlo come C++ 14, è necessario aggiungere -std=c++14 nel terminale.Compilare il programma come C++ 14 in Sublime Text 3 come predefinito

Sublime Text è considerato un editor di valore per la programmazione competitiva grazie alla sua leggerezza e alle sue caratteristiche. In queste competizioni il tempo è importante e quindi il tempo è sprecato per copiare in un file di testo e poi correre dal terminale. C++ 14 offre una ricca libreria e altre importanti funzionalità rispetto a 98. Così si vorrebbe essere in grado di compilare il codice su testo sublime e come C++ 14.

Ma come posso assicurarmi che quando compilo il codice all'interno di Sublime Text 3, viene compilato come predefinito in C++ 14?

Dopo un po 'armeggiare intorno mi è venuta la seguente soluzione -.

  1. Vai a pacchetti ed estrarre C++ sublime-pacchetto
  2. Aprire C++ singolo File.sublime-build
  3. Change

    "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\"" 
    

    a

    "shell_cmd": "g++ -std=c++14 \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\"" 
    

    Aggiunto -std=c++14 sia costruire e gestire

  4. Salva e sovrascrivere pacchetto originariamente nel Sublime Text 3

E 'questo il modo giusto per farlo? È chiamato come singolo file - È qualcosa di cui preoccuparsi se voglio usare più file?

risposta

5

E 'meglio per creare un nuovo sistema di compilazione, ecco come:

Cliccare sulla Tools -> Build System -> New Build System.

Questo è quello che uso (notare la bandiera -std=c++14)

{ 
"cmd":["bash", "-c", "g++ -std=c++14 -Wall '${file}' -o '${file_path}/${file_base_name}' && '${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++ -std=c++14 '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"] 
    } 
] 
} 

(credo che si può semplicemente utilizzare la linea hai già e salvarlo in un nuovo file system build.)

Ora salva la nuova build, selezionala in Tools -> Build System.
E ora è possibile creare ed eseguire con CTRL + B

+0

E riguardo la compilazione di più file, come i pacchetti. Dovrei preoccuparmi perché il nome del file (C++ Single File.sublime-build) suggerisce che sarebbe solo per un singolo file? –

1

In genere, è errato modificare i file predefiniti. Basta creare un nuovo sistema di costruzione Pallet -> Build: New Build System aggiungi le tue modifiche lì e salvalo come vuoi. Poi, quando si desidera utilizzarlo basta selezionare costruire con: (nome nuovo sistema di build) Se si desidera anche la Build - opzione Esegui, utilizzare questo codice invece:

{ 
"cmd": ["g++", "-std=c++14", "${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++ -std=c++1y '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"] 
    } 
] 

} 
+0

_-std = C++ 1y è lo stesso di -std = C++ 14_ No non lo è. – erip

+0

E riguardo la compilazione di più file, come i pacchetti. Dovrei preoccuparmi perché il nome del file suggerisce che sarebbe solo per un singolo file? –

+0

@erip quali sono le differenze betwen -std = C++ 14 e -std = C++ 1y –

0

Il modo migliore per modificare i file di default è quello di utilizzare PackageResourceViewer.

Una volta installato, eseguire il comando PackageResourceViewer: Open Resource da command palette. Ti verrà mostrato un elenco di pacchetti che puoi navigare per selezionare il file che desideri modificare.

Il file selezionato verrà aperto in un nuovo documento, e le eventuali modifiche verranno salvate in un nuovo file situato a Packages/PackageThatYouEdited/FileThatYouEdited.ext

Il vantaggio di questo metodo è che il file modificato in Packages ora sovrascrivere il file originale che risiede nel file sublime-package, ma il file originale rimarrà intatto. Se si sceglie di cancellare il file modificato, il file originale nel sublime-package sarà nuovamente attivo.