Makefile 824 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # Compiler and Linker
  2. CXX = g++
  3. CXXFLAGS = -std=c++17 -Wall -Wextra `pkg-config --cflags gtkmm-3.0`
  4. LDFLAGS = `pkg-config --libs gtkmm-3.0`
  5. # Target Executable Name
  6. TARGET = visual-renamer
  7. # Directories
  8. SRC_DIR = src
  9. OBJ_DIR = obj
  10. # Source and Object Files
  11. SOURCES = $(wildcard $(SRC_DIR)/*.cpp)
  12. OBJECTS = $(SOURCES:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o)
  13. # Default Rule
  14. all: $(TARGET)
  15. # Link the executable
  16. $(TARGET): $(OBJECTS)
  17. @echo "Linking $@..."
  18. $(CXX) -o $@ $(OBJECTS) $(LDFLAGS)
  19. # Compile source files to object files
  20. $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp | $(OBJ_DIR)
  21. @echo "Compiling $<..."
  22. $(CXX) $(CXXFLAGS) -c $< -o $@
  23. # Create object directory if it doesn't exist
  24. $(OBJ_DIR):
  25. mkdir -p $(OBJ_DIR)
  26. # Clean build artifacts
  27. clean:
  28. @echo "Cleaning up..."
  29. rm -rf $(OBJ_DIR) $(TARGET)
  30. # Phonies
  31. .PHONY: all clean