我可以使用带有-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,而不是CFLAGSCFLAGS适用于C应用程序。

正如@Florian Sowade所说,您可以使用CFLAGS += -O3 -std....(或CXXFLAGS ..),以便用户在执行make时可以提供自己的标志。

10-02 01:01