c_mains := poiss.c svd.c timestamp.c c_sources := $(c_mains) arg_parser.c parse_csv.c % : %.c # cancel built-in one-step rule %.o : %.c g++ -g -O2 -Wall $< -c % : %.o g++ $^ $(LDFLAGS) -o $@ .PHONY : all priority ## dependency-finding scheme (with local mods) based on: ## http://www.gnu.org/manual/make-3.77/html_mono/make.html#SEC42 ## (requires an include statement at end of the makefile) %.d: %.c @$(SHELL) -ec '$(CXX) -MM $(CXXFLAGS) $< \ | sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \ [ -s $@ ] || rm -f $@' ################ end of pattern rules, start of real rules all : $(c_mains:.c=) poiss : poiss.o arg_parser.o parse_csv.o g++ $^ -lnlopt -o $@ svd : svd.o arg_parser.o parse_csv.o g++ $^ -larmadillo -o $@ timestamp: timestamp.o arg_parser.o $(CXX) $^ -lpthread -o $@ priority: sudo setcap CAP_SYS_NICE=ep ./timestamp ifndef NO_DOT_D include $(c_sources:.c=.d) endif