Я хочу добавить -std=c++11 в свой make-файл, но не знаю, куда добавить, вот мой код:
hw07: test.o functions.o
g++ test.o functions.o -o hw07
test.o: test.cpp headerfile.h
g++ -c test.cpp
functions.o: functions.cpp headerfile.h
g++ -c functions.cpp
clean:
rm *.o hw07
в приведенном выше коде, где я должен добавить код stdc++ 11, пожалуйста, помогите мне...
Возможный дубликат Как включить С++ 11 в gcc?
добавить флаг перед g++ g++ -std=c++11 -o test test.cpp
Вы можете просто добавить -std=c++11
после каждого g++
:
hw07: test.o functions.o
g++ -std=c+++11 test.o functions.o -o hw07
test.o: test.cpp headerfile.h
g++ -std=c+++11 -c test.cpp
functions.o: functions.cpp headerfile.h
g++ -std=c+++11 -c functions.cpp
clean:
rm *.o hw07
Также вы можете использовать переменную:
CPP_FLAGS='-std=c++11'
hw07: test.o functions.o
g++ ${CPP_FLAGS} test.o functions.o -o hw07
test.o: test.cpp headerfile.h
g++ ${CPP_FLAGS} -c test.cpp
functions.o: functions.cpp headerfile.h
g++ ${CPP_FLAGS} -c functions.cpp
clean:
rm *.o hw07
Вместо того, чтобы расписывать все правила и все команды, используйте переменные и неявные правила для построения вашей программы:
CXXFLAGS = -std=c++11
hw07: test.o functions.o
test.o: test.cpp headerfile.h
functions.o: functions.cpp headerfile.h
clean:
rm *.o hw07
Это заставит make
построить объектные файлы, используя $(CXXFLAGS)
в качестве параметров для передачи компилятору. Затем make
соберет программу hw07
, используя файлы, перечисленные в ее зависимостях.
Другие флаги, которые хорошо иметь при компиляции исходных файлов, это -Wall
и -Wextra
. Они включают больше предупреждающих сообщений от компилятора, которые почти во всех случаях указывают на подозрительные вещи, которые могут привести к проблемам.
спасибо большое чувак мне помогло :)
Везде, где вы встраиваете исходный файл в объектный файл, было бы хорошим началом.