makefile funktioniert nicht mit -std=c++11-option

Ich versuche zu spielen, mit einigen C++11 Funktionen mit g++ 4.8.2 mit dem folgenden makefile

CC=g++
DEBUG=-g
CFLAGS=-c -Wall -std=c++11 $(DEBUG)
LFLAGS = -Wall -std=c++11 $(DEBUG)
SOURCES=test.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=test

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LFLAGS) $(OBJECTS) -o $@ -std=c++11
.cpp .o:
    $(CC)  $(CFLAGS) $< -o $@ -std=c++11

clean:
    rm -rf *o $(EXECUTABLE)    

Aber wenn ich den Aufruf von "make", hier ist die Fehlermeldung die ich bekomme,

$ make
g++    -c -o test.o test.cpp
test.cpp: In function int main()’:
test.cpp:18:15: error: range-based for loops are not allowed in C++98 mode
  for (int i : {2, 3, 5, 7, 9, 13, 17, 19})
               ^
make: *** [test.o] Error 1

Es scheint mir, dass -std=c++11 nicht abgeholt, also habe ich versucht zu werfen, dass die option im Bündel von verschiedenen Orten, aber immer noch gleiche Fehler Auftritt.

Aktuelle Lösung ist die Verwendung Kommandozeilen-direkt, und das funktioniert für mich

$ cat test.cpp
#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World"  << endl;

    for (int i : {2, 3, 5, 7, 9, 13, 17, 19})
    {
            cout << i << " ";
    }
    cout << endl;
    return 0;
}

$ g++ -std=c++11 test.cpp -o test -W
$ ./test
Hello World
2 3 5 7 9 13 17 19

Ich Frage mich nur, warum makefile nicht tun, die gleiche Sache, und wie könnte ich die update-makefile zu verwenden,- std=c++11-option.

  • -std wird zweimal, in CFLAGS und direkt in der Regel.
InformationsquelleAutor cookieisaac | 2014-12-16
Schreibe einen Kommentar