J'utilise gcc 4.8.1 de http://hpc.sourceforge.net sur Mac OSX Mountain Lion. J'essaye de compiler un programme C ++ qui utilise la to_string
fonction dans <string>
. J'ai besoin d'utiliser le drapeau à -std=c++11
chaque fois:
g++ -std=c++11 -o testcode1 code1.cpp
Existe-t-il un moyen d'inclure cet indicateur par défaut?
CXXFLAGS
.Réponses:
H2CO3 a raison, vous pouvez utiliser un makefile avec le CXXFLAGS défini avec -std = c ++ 11 Un makefile est un simple fichier texte avec des instructions sur la façon de compiler votre programme. Créez un nouveau fichier nommé Makefile (avec un M majuscule). Pour compiler automatiquement votre code, tapez simplement la commande make dans un terminal. Vous devrez peut-être installer make.
En voici une simple:
Il suppose que tous les fichiers .cpp sont dans le même répertoire que le makefile. Mais vous pouvez facilement modifier votre makefile pour prendre en charge un répertoire src, include et build.
Edit : J'ai modifié le compilateur c ++ par défaut, ma version de g ++ n'est pas à jour. Avec clang ++, ce makefile fonctionne très bien.
la source
Comme mentionné précédemment - dans le cas d'un projet,
Makefile
ou autre, il s'agit d'un problème de configuration de projet, où vous devrez probablement spécifier d'autres indicateurs également.Mais qu'en est-il des programmes ponctuels, où vous écririez normalement
g++ file.cpp && ./a.out
?Eh bien, je voudrais bien avoir un peu de
#pragma
se replier sur au niveau de la source, ou peut - être une extension par défaut - par exemple.cxx
ou.C11
ou autre, déclencheur par défaut. Mais à partir d'aujourd'hui, une telle fonctionnalité n'existe pas.Mais, comme vous travaillez probablement dans un environnement manuel (ex. Shell), vous pouvez simplement avoir un alias en vous
.bashrc
(ou autre):ou, pour le G ++ plus récent (et quand vous voulez vous sentir "vrai C ++ 11")
Vous pouvez même
g++
vous aliaser, si vous détestez autant le C ++ 03;)la source
Je pense que vous pouvez le faire en utilisant un fichier de spécifications.
Sous MinGW, vous pouvez exécuter
gcc -dumpspecs> specs
Où il est dit
Vous le changez en
Et puis placez-le dans
/ mingw / lib / gcc / mingw32 / <version> / specs
Je suis sûr que vous pourriez faire la même chose sans une version MinGW. Cependant, je ne sais pas où placer le fichier de spécifications.
Le dossier est probablement / gcc / lib / ou / gcc /.
la source
strace -f gcc your-sources-here 2>&1 | grep specs
. Sur un (plus ancien) système Debian, cela donne/usr/lib/gcc/i586-linux-gnu/4.9/specs
. Crééspecs
comme décrit dans la réponse (nécessite sudo pour le déplacer sous Linux) et fonctionne comme un charme! Merci.Si vous utilisez sublime, ce code peut fonctionner si vous l'ajoutez dans la construction en tant que code pour le système de construction. Vous pouvez utiliser ce lien pour plus d'informations.
la source