Hinski2

Untitled

Jun 30th, 2024
9
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. # Output files
  2. TARGET = bin/SuperTicTacToe
  3. TEST_TARGET = bin/Test_SuperTicTacToe
  4.  
  5. # Compilation flags
  6. CXX = g++
  7. CXXFLAGS = -Iinclude -Iengine/include -Iutils -Iutils/bot_utils -g -std=c++17
  8.  
  9. # Directories
  10. SRCDIR = src
  11. INCDIR = include
  12. ENGINE_SRCDIR = engine/src
  13. UTILS_SRCDIR = utils
  14. BOT_UTILS_SRCDIR = utils/bot_utils
  15. TESTDIR = tests
  16. OBJDIR = obj
  17. BINDIR = bin
  18.  
  19. # Source files
  20. SOURCES = $(wildcard $(SRCDIR)/*.cpp) $(wildcard $(ENGINE_SRCDIR)/*.cpp) $(wildcard $(UTILS_SRCDIR)/*.cpp) $(wildcard $(BOT_UTILS_SRCDIR)/*.cpp)
  21. TEST_SOURCES = $(wildcard $(TESTDIR)/*.cpp)
  22. OBJECTS = $(patsubst %.cpp,$(OBJDIR)/%.o,$(notdir $(SOURCES)))
  23. TEST_OBJECTS = $(patsubst %.cpp,$(OBJDIR)/test_%.o,$(notdir $(TEST_SOURCES)))
  24.  
  25. # End rule
  26. $(TARGET): $(OBJECTS)
  27. @mkdir -p $(BINDIR)
  28. $(CXX) $(OBJECTS) -o $(TARGET)
  29.  
  30. # Object files rule
  31. $(OBJDIR)/%.o: $(SRCDIR)/%.cpp
  32. @mkdir -p $(OBJDIR)
  33. $(CXX) $(CXXFLAGS) -c $< -o $@
  34.  
  35. $(OBJDIR)/%.o: $(ENGINE_SRCDIR)/%.cpp
  36. @mkdir -p $(OBJDIR)
  37. $(CXX) $(CXXFLAGS) -c $< -o $@
  38.  
  39. $(OBJDIR)/%.o: $(UTILS_SRCDIR)/%.cpp
  40. @mkdir -p $(OBJDIR)
  41. $(CXX) $(CXXFLAGS) -c $< -o $@
  42.  
  43. $(OBJDIR)/%.o: $(BOT_UTILS_SRCDIR)/%.cpp
  44. @mkdir -p $(OBJDIR)
  45. $(CXX) $(CXXFLAGS) -c $< -o $@
  46.  
  47. # Test object files rule
  48. $(OBJDIR)/test_%.o: $(TESTDIR)/%.cpp
  49. @mkdir -p $(OBJDIR)
  50. $(CXX) $(CXXFLAGS) -c $< -o $@
  51.  
  52. # Creating test program rule
  53. $(TEST_TARGET): $(OBJECTS) $(TEST_OBJECTS)
  54. @mkdir -p $(BINDIR)
  55. $(CXX) $(OBJECTS) $(TEST_OBJECTS) -o $(TEST_TARGET)
  56.  
  57. # Running tests
  58. .PHONY: test
  59. test: $(TEST_TARGET)
  60. ./$(TEST_TARGET)
  61.  
  62. # Cleaning
  63. .PHONY: clean
  64. clean:
  65. rm -rf $(OBJDIR) $(BINDIR)
  66.  
  67. # Run rule
  68. .PHONY: run
  69. run: $(TARGET)
  70. ./$(TARGET)
  71.  
Add Comment
Please, Sign In to add comment