【发布时间】:2015-02-02 04:20:51
【问题描述】:
make 似乎忽略了我的 cflag 选项,因为编译器抱怨我需要将 -std=c++11 作为标志,但该选项包含在我的 makefile 中。
CC=g++
# Flags for the C compiler
CXX_FLAGS= \
-Wall \
-std=c++11 \
-O2
# Linker Flags
LD_FLAGS=
# Sources to compile
SOURCES=main.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXE=HolidayLights.out
all: $(SOURCES) $(EXE)
# Primary build target
$(EXE): $(OBJECTS)
$(CC) $(LD_FLAGS) $(OBJECTS) -o $@
.o:
$(CC) -c $(CXX_FLAGS) -o $@ $<
这个makefile的构建命令的输出是:
g++ -c -o main.o main.cpp
我不明白为什么它没有在输出中列出我的标志。另外,我知道它忽略了-std=c++11 标志,因为它抱怨非静态常量成员,并且不应该启用该标志。
Edit0:符号更改
【问题讨论】:
-
@RSahu 您的评论似乎只是一个符号,但是我确实进行了更改,以后阅读起来会更容易。
-
CC 和 CC_FLAGS 用于 C 编译器。将 CXX 和 CXX_FLAGS 用于 C++ 编译器。还是CXXFLAGS?我喜欢 Make。
-
如果你依赖 GNU Make 使用的默认规则,你可以定义
CXXFLAGS和CFLAGS来控制编译器标志以获得你需要的一切。 -
@n.m.这样做确实更有意义。我只是根据 C makefile 的旧教程建立了我的 makefile。我从某所大学网上找到的。