Научавам за makefiles. Това, което се опитах е да напиша моя собствена след малко четене. Проблемът е, че винаги получавам грешки, свързани със стандарта 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 игнорира моя флаг. Има ли решение на това?
И да, мога да компилирам с -std=c++0x флаг без make, така че моят компилатор не е проблем очевидно.
make
трябва да отпечата всяка команда, докато я изпълнява. Каквоg++
извикване непосредствено предхожда грешката? - person cdhowie   schedule 08.05.2013g++ src/normal.c -o obj/normal.o -std=c++0x
- person cdhowie   schedule 08.05.2013test: echo $(SRC); echo $(OBJ)
(с нови редове, където е подходящо) и след това да изпълнитеmake test
. Може би съдържанието на тези променливи не е това, което очаквате. - person cdhowie   schedule 08.05.2013