我可以使用带有-std = c++ 0x选项的gcc编译单个文件。但是我无法通过makefile做到这一点。这是我的makefile中的一组标志(make提示c++ 11关键字后):
MACHINE = $(shell echo `uname -s`-`uname -m` | sed "s/ //g")
CCC = CC
CCC = g++
CFLAGS = -O3
CFLAGS = -std=c++0x
CFLAGS = -pg -D_DEBUG -g -c -Wall
LFLAGS = -O
LFLAGS = -pg -g
我想念什么?
编辑:
我将其更改为以下内容,但仍然出现编译错误,而命令行gcc调用却没有。
CXXFLAGS=-O3 -std=c++0x -pg -D_DEBUG -g -c -Wall
最佳答案
这样,您的makefile将使用所有的CFLAGS
:
CFLAGS=-O3 -std=c++0x -pg -D_DEBUG -g -c -Wall
您将使用每个“CFLAGS = ...”声明覆盖它们。
而且,它应该是
CXXFLAGS
,而不是CFLAGS
。 CFLAGS
适用于C应用程序。正如@Florian Sowade所说,您可以使用
CFLAGS += -O3 -std....
(或CXXFLAGS ..),以便用户在执行make时可以提供自己的标志。