我正在学习makefile。我尝试的是在阅读后写自己的。问题是,我总是遇到与 c++11 标准相关的错误,即使我将所需的编译器标志放入 makefile。这是错误:
/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 $@ $(CXX_FLAGS)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
$(CC) $< -o $@ $(CXX_FLAGS)
clean:
rm $(NAME) $(OBJ_DIR) -rf
请注意,在检查了有关堆栈溢出的其他问题后,我已将 CXX_FLAGS 放入,但无济于事。我仍然得到同样的错误。就像make忽略了我的标志。有针对这个的解决方法吗?
是的,我可以在没有 make 的情况下使用 -std=c++0x 标志进行编译,所以我的编译器显然不是问题。