我正在學習makefile。我試過的是在閱讀一小段文字後寫下自己的一本。問題是,即使我把需要的編譯器標誌放到makefile中,我總會得到與C++ 11標準相關的錯誤。以下是錯誤:Makefile C++ 11錯誤
/usr/include/c++/4.6/bits/c++0x_warning.h:32:2: error:
#error This file requires compiler and library support for the upcoming
ISO C++ standard, C++0x. This support is currently experimental, and
must be enabled with the -std=c++0x or -std=gnu++0x compiler options.
這裏是生成文件:
CC = g++
LD = g++
NAME = app
OBJ_DIR = obj
SRC_DIR = src
CXX_FLAGS = -std=c++0x
SRC = $(shell find $(SRC_DIR) -type f -regex ".*\.cpp")
OBJ = $(subst $(SRC_DIR), $(OBJ_DIR), $(addsuffix .o, $(basename $(SRC))))
all: $(NAME)
$(NAME): $(OBJ)
$(LD) $< -o [email protected] $(CXX_FLAGS)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
$(CC) $< -o [email protected] $(CXX_FLAGS)
clean:
rm $(NAME) $(OBJ_DIR) -rf
請注意,我已經把CXX_FLAGS檢查出的堆棧溢出的其他問題後,但無濟於事。我仍然得到同樣的錯誤。這就像make忽略我的國旗。有針對這個的解決方法嗎?
是的,我可以用-std = C++ 0x標誌編譯而不make,所以我的編譯器顯然不是問題。
'make'應該在執行時輸出每條命令。什麼'g ++'調用立即出現在錯誤之前? – cdhowie 2013-05-08 15:54:20
@cdhowie g ++ -c -o src/normal.o src/normal.cpp 它看起來像忽略我的國旗。 – darxsys 2013-05-08 15:55:28
所以這個問題根本不在C++ 11標誌中。你的實際問題是「爲什麼我的makefile規則不被使用」。如果是這樣的話,我希望該行是'g ++ src/normal.c -o obj/normal.o -std = C++ 0x' – cdhowie 2013-05-08 15:56:15