Eu uso o gcc 4.8.1 de http://hpc.sourceforge.net no Mac OSX Mountain Lion. Estou tentando compilar um programa C ++ que usa a to_string
função em <string>
. Preciso usar a bandeira -std=c++11
todas as vezes:
g++ -std=c++11 -o testcode1 code1.cpp
Existe uma maneira de incluir este sinalizador por padrão?
CXXFLAGS
.Respostas:
H2CO3 está certo, você pode usar um makefile com o CXXFLAGS definido com -std = c ++ 11 Um makefile é um arquivo de texto simples com instruções sobre como compilar seu programa. Crie um novo arquivo chamado Makefile (com um M maiúsculo). Para compilar seu código automaticamente, basta digitar o comando make em um terminal. Você pode ter que instalar o make.
Aqui está um simples:
Ele assume que todos os arquivos .cpp estão no mesmo diretório que o makefile. Mas você pode facilmente ajustar seu makefile para suportar um src, incluir e construir diretórios.
Editar : eu modifiquei o compilador c ++ padrão, minha versão do g ++ não está atualizada. Com o clang ++, este makefile funciona bem.
fonte
Conforme mencionado anteriormente - no caso de um projeto,
Makefile
ou não, este é um problema de configuração do projeto, onde provavelmente você também precisará especificar outros sinalizadores.Mas e os programas únicos, onde normalmente você apenas escreveria
g++ file.cpp && ./a.out
?Bem, eu gostaria muito de ter alguns
#pragma
para ativar no nível de origem, ou talvez uma extensão padrão - digamos.cxx
ou.C11
ou o que quer que seja, acioná-lo por padrão. Mas a partir de hoje, esse recurso não existe.Mas, como você provavelmente está trabalhando em um ambiente manual (ou seja, shell), você pode apenas ter um alias em você
.bashrc
(ou qualquer outro):ou, para G ++ mais recente (e quando você quiser se sentir "real C ++ 11")
Você pode até mesmo usar um alias para
g++
si mesmo, se você odeia tanto C ++ 03;)fonte
Acho que você poderia fazer isso usando um arquivo de especificações.
No MinGW, você pode executar
gcc -dumpspecs> specs
Onde diz
Você muda para
E então coloque-o em
/ mingw / lib / gcc / mingw32 / <versão> / specs
Tenho certeza que você poderia fazer o mesmo sem uma compilação MinGW. Não tenho certeza de onde colocar o arquivo de especificações embora.
A pasta provavelmente é / gcc / lib / ou / gcc /.
fonte
strace -f gcc your-sources-here 2>&1 | grep specs
. Em um sistema Debian (mais antigo), isso produz/usr/lib/gcc/i586-linux-gnu/4.9/specs
. Criou issospecs
conforme descrito na resposta (precisa de sudo para movê-lo para lá no Linux) e funciona perfeitamente! Obrigado.Se você estiver usando sublime, este código pode funcionar se você adicioná-lo no build como código para o sistema de construção. Você pode usar este link para mais informações.
fonte