-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmakefile
More file actions
64 lines (45 loc) · 1.32 KB
/
Copy pathmakefile
File metadata and controls
64 lines (45 loc) · 1.32 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Compiler options
CXX = g++
CXXFLAGS = -std=c++17 -Wall -Wextra -pedantic -g -I/opt/homebrew/include -Wno-deprecated-declarations
LDFLAGS = -L/opt/homebrew/lib
# Link the libraries
LDLIBS = -lboost_filesystem -lcryptopp -lfmt -lspdlog
# Conditional compilation flags
ifeq ($(MODE),decrypt)
CXXFLAGS += -DDECRYPT_MODE
endif
ifeq ($(LOG_LEVEL),CRITICAL)
CXXFLAGS += -DCRITICAL_LOGGING_ONLY
endif
ifeq ($(LOG_LEVEL),DEBUG)
CXXFLAGS += -DENABLE_DEBUG_LOGGING
endif
# Source files and object files
SRCS = $(wildcard *.cpp)
OBJS = $(SRCS:.cpp=.o)
# Executable file
EXEC = client_app
# Targets
all: $(EXEC)
debug: CXXFLAGS += -DENABLE_DEBUG_LOGGING
debug: all
info: $(EXEC) transfer.info
transfer.info:
echo "127.0.0.1:1234" > transfer.info
echo "Michael Jackson" >> transfer.info
echo "makefile" >> transfer.info
echo "client.cpp" >> transfer.info
SERVER_PATH = ../server
server_transfer_info:
echo "127.0.0.1:1234" > $(SERVER_PATH)/transfer.info
echo "Michael Jackson" $(SERVER_PATH)/transfer.info
$(EXEC): $(OBJS)
$(CXX) $^ $(LDFLAGS) $(LDLIBS) -o $@
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
FILE_PATH = ./server
clean:
rm -f $(OBJS) $(EXEC)
deepclean: clean
rm -f *.db priv.key me.info logs.info defensive.db transfer.info
rm -f $(FILE_PATH)/defensive.db $(FILE_PATH)/priv.key $(FILE_PATH)/me.info $(FILE_PATH)/logs.txt