【发布时间】:2014-10-31 16:37:55
【问题描述】:
我正在使用以下 makefile 来构建我的项目:
CC = /usr/bin/g++
CFLAGS = -Wall -pedantic -std=c++0x
LDFLAGS =
OBJ = main.o pnmhandler.o pixmap.o color.o
pnm: $(OBJ)
$(CC) $(CFLAGS) -o pnm $(OBJ) $(LDFLAGS)
%.o: %.c
$(CC) $(CFLAGS) -c $<
当我运行 make 我得到以下错误:
/usr/include/c++/4.9.1/bits/c++0x_warning.h:32:2: 错误:#error 这个 文件需要对 ISO C++ 2011 的编译器和库支持 标准。此支持目前是实验性的,必须启用 使用 -std=c++11 或 -std=gnu++11 编译器选项。
正如我从以下行中看到的,CFLAGS 没有正确包含,但我不知道我做错了什么:
g++ -c -o main.o main.cpp
也试过-std=c++11和-std=gnu++11,没有任何结果。有什么想法吗?
如果我运行make -Bn,我会得到:
g++ -c -o main.o main.cpp
g++ -c -o pnmhandler.o pnmhandler.cpp
g++ -c -o pixmap.o pixmap.cpp
g++ -c -o color.o color.cpp
/usr/bin/g++ -Wall -pedantic -std=c++0x -o pnm main.o pnmhandler.o pixmap.o color.o
编辑:将规则 %.o: %.c 替换为 %.o: %.cpp 解决了我的问题。
【问题讨论】:
-
您可以尝试使用
-Bn调用一次make 吗? (试运行,全部重建) -
好的...我解决了这个问题。如果我正在处理 C++ 文件,那么规则
%.o: %.c当然永远不会被调用。对不起。感谢您将我指向make -Bn。