Skip to content

Commit 03332d0

Browse files
committed
update the makefile
1 parent 70f345a commit 03332d0

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

scanner/Makefile

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
# Compiler and flags
22
CXX := g++
3-
CXXFLAGS := -std=c++17 -Iinclude -Wall -Wextra -Werror
3+
CXXFLAGS := -std=c++17 -Iinclude -I/usr/include/gtest -Wall -Wextra -Werror
4+
GTEST_DIR := /usr/include/gtest
5+
GTEST_LIB_DIR := /usr/lib/x86_64-linux-gnu
46

57
# Directories
68
SRC_DIR := src
79
INCLUDE_DIR := include
810
BUILD_DIR := build
911
OUTPUT_DIR := output
12+
TEST_DIR := test
1013

1114
# Source and object files
1215
SRCS := $(wildcard $(SRC_DIR)/*.cpp)
1316
OBJS := $(patsubst $(SRC_DIR)/%.cpp, $(BUILD_DIR)/%.o, $(SRCS))
1417

18+
# Object files excluding the main program
19+
TEST_OBJS := $(filter-out $(BUILD_DIR)/mian.o, $(OBJS))
20+
1521
# Target executable
1622
TARGET := scanner
1723

@@ -42,5 +48,18 @@ run: $(TARGET)
4248
./$(TARGET) examples/example1.txt $(OUTPUT_DIR)/output.txt
4349
cat $(OUTPUT_DIR)/output.txt
4450

45-
.PHONY: all clean run
51+
# Build and run a specific test
52+
test: $(TEST_OBJS) | $(BUILD_DIR)
53+
@echo "TEST_FILE is $(TEST_FILE)"
54+
@if [ -z "$(TEST_FILE)" ]; then \
55+
echo "Error: Please specify a test file using TEST_FILE=<test_file>"; \
56+
echo "Example: make test TEST_FILE=token_test"; \
57+
exit 1; \
58+
else \
59+
echo "Compiling $(TEST_DIR)/$(TEST_FILE).cpp"; \
60+
$(CXX) $(CXXFLAGS) -I$(GTEST_DIR) -L$(GTEST_LIB_DIR) \
61+
$(TEST_DIR)/$(TEST_FILE).cpp $(TEST_OBJS) -lgtest -lgtest_main -pthread \
62+
-o $(BUILD_DIR)/$(TEST_FILE)_test && ./$(BUILD_DIR)/$(TEST_FILE)_test; \
63+
fi
4664

65+
.PHONY: all clean run test

0 commit comments

Comments
 (0)