c++ - Makefile C++11 error -
i'm learning makefiles. tried writing own 1 after little reading. problem is, errors connected c++11 standard, though put compiler flag needed makefile. here error:
/usr/include/c++/4.6/bits/c++0x_warning.h:32:2: error: #error file requires compiler , library support upcoming iso c++ standard, c++0x. support experimental, , must enabled -std=c++0x or -std=gnu++0x compiler options.
and here makefile:
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
notice i've put cxx_flags after checking out other questions on stack overflow, no avail. still same error. it's make ignoring flag. there solution this?
and yes, can compile -std=c++0x flag without make, compiler not problem obviously.
does directory obj
exist?
a better way write be:
obj = $(patsubst $(src_dir)/%.cpp,$(obj_dir)/%.o,$(src))
you can add $(info obj = $(obj))
etc. after these lines print them out. results of these operations don't match pattern rules, make using default pattern rules.
i discourage kind of thing (using find
) though. always, type out source files want compile. doesn't take more few seconds add new file, , ensures don't start throwing random junk program when least expect it.
your compile command wrong: you've forgotten -c
flag important. recommend people use same command default rules (run make -p -f/dev/null
see default rules).:
$(obj_dir)/%.o: $(src_dir)/%.cpp $(compile.cc) $(output_option) $<
this require use standard flags variables (i.e., cxx
not cc
, cxxflags
not cxx_flags
) that's idea anyway.
Comments
Post a Comment