2010-10-07 23:11

[C/C++語言] Makefile 通用範例

  1. SRC_DIR = src 
  2. OBJ_DIR = obj 
  3.  
  4. SOURCES = \ 
  5. $(SRC_DIR)/test2.cpp \ 
  6.  
  7. TARGET = main.exe 
  8.  
  9.  
  10. # =================================================  
  11. INCLUDE_PATH = \ 
  12. #-I"include_path" \ 
  13.  
  14. NEXUSMGR_LIBDIR = \ 
  15. #-L"library_path" \ 
  16.  
  17. CXXFLAGS = -O0 -g3 -Wall -fPIC -w -c -fmessage-length=0 
  18. CFLAGS = -O0 -g3 -Wall -fPIC -w -c -fmessage-length=0 
  19.  
  20. LIBS = \ 
  21. #-lsqlite \ 
  22.  
  23. CC := gcc 
  24. CXX := g++ 
  25. RM := del /Q 
  26.  
  27. # =================================================  
  28. OBJS:=$(subst $(SRC_DIR),$(OBJ_DIR),$(SOURCES)) 
  29. OBJS:=$(OBJS:%.cpp=%.cpp.o) 
  30. OBJS:=$(OBJS:%.C=%.C.o) 
  31. OBJS:=$(OBJS:%.c=%.c.o) 
  32.  
  33. $(OBJ_DIR)/%.cpp.o: $(SRC_DIR)/%.cpp 
  34.    $(CXX) $(CXXFLAGS) $(INCLUDE_PATH) -MMD -MP -MF $(@:%.o=%.d) -MT $(@:%.o=%.d) -o $@ $<  
  35.  
  36. $(OBJ_DIR)/%.C.o: $(SRC_DIR)/%.C 
  37.    $(CXX) $(CXXFLAGS) $(INCLUDE_PATH) -MMD -MP -MF $(@:%.o=%.d) -MT $(@:%.o=%.d) -o $@ $<  
  38.  
  39. $(OBJ_DIR)/%.c.o: $(SRC_DIR)/%.c 
  40.    $(CC) $(CFLAGS) $(INCLUDE_PATH) -MMD -MP -MF $(@:%.o=%.d) -MT $(@:%.o=%.d) -o $@ $< 
  41.  
  42.  
  43. $(TARGET): $(OBJS) 
  44.    $(CXX) $(NEXUSMGR_LIBDIR) -o $(TARGET) $(OBJS) $(LIBS) 
  45.  
  46. $(OBJ_DIR): 
  47.    -mkdir $(OBJ_DIR) 
  48.  
  49. all: $(OBJ_DIR) $(TARGET) 
  50.  
  51. clean: 
  52.    -$(RM) $(OBJ_DIR) $(TARGET) 

0 回應: