-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
37 lines (25 loc) · 842 Bytes
/
Copy pathMakefile
File metadata and controls
37 lines (25 loc) · 842 Bytes
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
CC = g++
CFLAGS = -std=c++17 -Wall -O3
SOURCES = $(wildcard *.cpp)
MAIN_SOURCE = main.cpp
TEST_SOURCE = testProgram.cpp
LIB_SOURCES = $(filter-out $(MAIN_SOURCE) $(TEST_SOURCE), $(SOURCES))
LIB_OBJECTS = $(LIB_SOURCES:.cpp=.o)
MAIN_OBJECT = $(MAIN_SOURCE:.cpp=.o)
TEST_OBJECT = $(TEST_SOURCE:.cpp=.o)
LIB_NAME = libFilmMaster2000.a
EXECUTABLE = runme
TEST_EXECUTABLE = testProgram
all: $(LIB_NAME) $(EXECUTABLE) $(TEST_EXECUTABLE)
$(LIB_NAME): $(LIB_OBJECTS)
ar rcs $@ $^
$(EXECUTABLE): $(MAIN_OBJECT) $(LIB_NAME)
$(CC) $(CFLAGS) -o $@ $(MAIN_OBJECT) -L. -lFilmMaster2000
$(TEST_EXECUTABLE): $(TEST_OBJECT) $(LIB_NAME)
$(CC) $(CFLAGS) -o $@ $(TEST_OBJECT) -L. -lFilmMaster2000
%.o: %.cpp
$(CC) $(CFLAGS) -c $< -o $@
test: $(TEST_EXECUTABLE)
./$(TEST_EXECUTABLE)
clean:
rm -f *.o $(LIB_NAME) $(EXECUTABLE) $(TEST_EXECUTABLE)