diff --git a/.gitignore b/.gitignore index 2ebe5e7..e5ce47e 100644 --- a/.gitignore +++ b/.gitignore @@ -89,4 +89,6 @@ dkms.conf settings.json watch.c ncwatchfile -ncsambawatcher \ No newline at end of file +ncsambawatcher + +obj/ \ No newline at end of file diff --git a/Makefile b/Makefile index fc542f6..2fa8abc 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,31 @@ -all: - g++ -lrt -std=c++17 src/main.cpp src/usermanager.cpp -o ncsambawatcher \ No newline at end of file +# Compiler and flags +CXX := g++ +CXXFLAGS := -std=c++17 -Wall -Wextra -O2 + +# Directories +SRC_DIR := src +OBJ_DIR := obj +BUILD_DIR := . +TARGET := $(BUILD_DIR)/ncsambawatcher + +# Create list of source and object files +SRCS := $(wildcard $(SRC_DIR)/*.cpp) +OBJS := $(SRCS:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o) + +# Default target +all: $(TARGET) + +# Link object files into final binary +$(TARGET): $(OBJS) + $(CXX) $(CXXFLAGS) -o $@ $^ + +# Compile .cpp to .o into obj/ +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp + @mkdir -p $(OBJ_DIR) + $(CXX) $(CXXFLAGS) -c $< -o $@ + +# Clean build artifacts +clean: + rm -f $(OBJ_DIR)/*.o $(TARGET) + +.PHONY: all clean