Używam gcc 4.8.1 z http://hpc.sourceforge.net na Mac OSX Mountain Lion. Próbuję skompilować program C ++, który używa rozszerzeniato_string
funkcji w <string>
. Za -std=c++11
każdym razem muszę używać flagi :
g++ -std=c++11 -o testcode1 code1.cpp
Czy istnieje sposób na włączenie tej flagi domyślnie?
CXXFLAGS
.Odpowiedzi:
H2CO3 ma rację, możesz użyć makefile z zestawem CXXFLAGS z opcją -std = c ++ 11 Makefile to prosty plik tekstowy z instrukcjami kompilacji programu. Utwórz nowy plik o nazwie Makefile (z dużej litery M). Aby automatycznie skompilować kod, po prostu wpisz polecenie make w terminalu. Konieczne może być zainstalowanie make.
Oto prosty:
Zakłada, że wszystkie pliki .cpp znajdują się w tym samym katalogu, co plik makefile. Ale możesz łatwo dostosować swój plik makefile, aby obsługiwał katalogi src, dołączania i budowania.
Edycja : zmodyfikowałem domyślny kompilator C ++, moja wersja g ++ nie jest aktualna. Z clang ++ ten plik makefile działa dobrze.
źródło
Jak już wspomniano - w przypadku projektu,
Makefile
lub w innym przypadku jest to problem z konfiguracją projektu, w którym prawdopodobnie będziesz musiał określić również inne flagi.Ale co z jednorazowymi programami, w których normalnie byś po prostu pisał
g++ file.cpp && ./a.out
?Cóż, bardzo chciałbym, aby niektóre
#pragma
włączały się na poziomie źródła, a może domyślne rozszerzenie - powiedzmy.cxx
lub.C11
czy coś, spust go domyślnie. Ale na dzień dzisiejszy nie ma takiej funkcji.Ale ponieważ prawdopodobnie pracujesz w środowisku ręcznym (np. Powłoce), możesz po prostu mieć w sobie alias
.bashrc
(lub cokolwiek):lub w przypadku nowszego G ++ (i gdy chcesz poczuć się jak „prawdziwy C ++ 11”)
Możesz nawet alias do
g++
siebie samego, jeśli tak bardzo nienawidzisz C ++ 03;)źródło
Myślę, że możesz to zrobić za pomocą pliku specyfikacji.
W MinGW można uruchomić
gcc -dumpspecs> specs
Gdzie jest napisane
Zmień to na
Następnie umieść go w
/ mingw / lib / gcc / mingw32 / <version> / specs
Jestem pewien, że możesz zrobić to samo bez kompilacji MinGW. Nie wiem jednak, gdzie umieścić plik specyfikacji.
Folder to prawdopodobnie / gcc / lib / lub / gcc /.
źródło
strace -f gcc your-sources-here 2>&1 | grep specs
. Na jednym (starszym) systemie Debian daje to wynik/usr/lib/gcc/i586-linux-gnu/4.9/specs
. Utworzono tospecs
zgodnie z opisem w odpowiedzi (wymaga sudo, aby przenieść to tam pod Linuksem) i działa jak urok! Dzięki.Jeśli używasz sublime, ten kod może działać, jeśli dodasz go w kompilacji jako kod do budowania systemu. Możesz skorzystać z tego łącza, aby uzyskać więcej informacji.
źródło