Makefile 840 B

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