-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
40 lines (30 loc) · 845 Bytes
/
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
# Makefile
# Absolute path of the project directory
PROJECT_DIR := $(shell pwd)
# Directories
INCLUDE_DIR := $(PROJECT_DIR)/include
SRC_DIR := $(PROJECT_DIR)/src
LIB_DIR := $(PROJECT_DIR)/lib
# Files
HEADERS := $(wildcard $(INCLUDE_DIR)/*.h)
SOURCES := $(wildcard $(SRC_DIR)/*.cpp)
OBJECTS := $(patsubst $(SRC_DIR)/%.cpp, $(LIB_DIR)/%.o, $(SOURCES))
LIBRARY := $(LIB_DIR)/libEfficiency.so
# Compilation flags
CXX := g++
CXXFLAGS := -Wall -O2 -I$(INCLUDE_DIR) `root-config --cflags --libs`
# Linking flags
LDFLAGS := -shared
LDLIBS := `root-config --libs`
# Build rules
all: $(LIBRARY)
@rm -f $(OBJECTS)
$(LIBRARY): $(OBJECTS)
@mkdir -p $(LIB_DIR)
$(CXX) $(LDFLAGS) -o $@ $^ $(LDLIBS)
$(LIB_DIR)/%.o: $(SRC_DIR)/%.cpp $(HEADERS)
@mkdir -p $(LIB_DIR)
$(CXX) $(CXXFLAGS) -c -o $@ $< -fPIC
clean:
rm -rf $(LIB_DIR)
.PHONY: all clean