-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathMakefile
47 lines (35 loc) · 1.13 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
CXX = g++
INC = -I include -I /usr/local/opt/openblas/include
FLG = -Wall -O2 -std=c++11
LIB = -lopenblas -L /usr/local/opt/openblas/lib
SRCS = $(shell find src -type f -name *.cc)
OBJS = $(patsubst src/%.cc, build/src/%.o, $(SRCS))
MAINSRCS = $(shell find exec -type f -name *.cc)
MAINOBJS = $(patsubst exec/%.cc, build/exec/%.o, $(MAINSRCS))
MAINTGTS = $(patsubst exec/%.cc, bin/exec/%, $(MAINSRCS))
TESTSRCS = $(shell find test -type f -name *.cc)
TESTOBJS = $(patsubst test/%.cc, build/test/%.o, $(TESTSRCS))
TESTTGTS = $(patsubst test/%.cc, bin/test/%, $(TESTSRCS))
.PHONY: main
main: $(MAINTGTS)
.PHONY: test
test: $(TESTTGTS)
$(foreach prog, $(TESTTGTS), $(prog) &&) true
.PHONY: clean
clean:
rm -rf build/* bin/*
bin/exec/%: build/exec/%.o $(OBJS)
@mkdir -p bin/exec;
$(CXX) $(FLG) $^ -o $@ $(LIB)
bin/test/%: build/test/%.o $(OBJS)
@mkdir -p bin/test;
$(CXX) $(FLG) $^ -o $@ $(LIB)
build/exec/%.o: exec/%.cc
@mkdir -p build/exec;
$(CXX) $(FLG) $(INC) -c $^ -o $@
build/test/%.o: test/%.cc
@mkdir -p build/test;
$(CXX) $(FLG) $(INC) -c $^ -o $@
build/src/%.o: src/%.cc
@mkdir -p build/src;
$(CXX) $(FLG) $(INC) -c $^ -o $@