Makefile修改以支持c ++ 11

Ari*_*Ari 7 c++ makefile c++11

我能够使用带有-std = c ++ 0x选项的gcc编译单个文件.但我不能通过makefile来做到这一点.以下是我的makefile中的标志集(在抱怨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
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

编辑:我将其更改为以下,但我仍然得到编译错误,我没有得到命令行gcc调用.

CXXFLAGS=-O3 -std=c++0x -pg -D_DEBUG -g -c -Wall
Run Code Online (Sandbox Code Playgroud)

mfo*_*ini 12

这样你的makefile将使用你的所有CFLAGS:

CFLAGS=-O3 -std=c++0x -pg -D_DEBUG -g -c -Wall
Run Code Online (Sandbox Code Playgroud)

你用每个"CFLAGS = ..."声明覆盖它们.

而且,它应该是CXXFLAGS,而不是CFLAGS.CFLAGS适用于C应用程序.

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

  • 如果你写'CFLAGS + = ...`,用户可以给他自己的CFLAGS带`CFLAGS ="..."make` (4认同)