make 规则

简单例子:

.SUFFIXES:.c .o ---------------------------------------------建立.c  .o文件关联

CC=g++  --------------------------------------------------------变量用大写
OBJK=$(SRC:.cpp=.o)--------------------------------------将字符串中的.cpp替换为.o
EXEC=test
SRC=hello.cpp\------------------------------------------------当源代码是多个文件中
        add.cpp

start:  $(OBJK)
        $(CC) -o $(EXEC) $(OBJK)
        @echo ---------ok-------    --------------------------------@不显示本行命令,只输出结果

.c.o:
        $(CC) -o $@ -c $<  -----------------------------------------$@ 表示关联文件中的后一个文件类型, $< 表示关联文件中的首个文件类型

clean:  
        rm -f $(OBJK)

复杂的语法:

  1 TARGET=spider                                                                          
  2 SOURCES=$(wildcard *.cpp)   //获取当前文件夹下所有的.CPP文件

  3 OBJS=$(patsubst %.cpp,%.o,$(SOURCES))  // 将列表中所有的.cpp文件的后缀.cpp替换为.o 
  4 
  5 CXX:=g++     //:= 直接使用后面的对象, 注意与=进行区别
  6 OPTIMIZATION?=-O2 -DNDEBUG  //?= 是如果没有被赋值过就赋予等号后面的值
  7 WARNINGS=-Wall
  8 #WARNINGS=-Wall -Werror
  9 REAL_CXXFLAGS=$(OPTIMIZATION) $(CXXFLAGS) $(WARNINGS) $(DEBUG) $(PROF) 
 10 REAL_LDFLAGS=$(LDFLAGS) $(PROF) -rdynamic -lpthread -levent -lcrypt -ldl
 11 
 12 
 13 
 14 all: $(TARGET)
 15 >---@if [ ! -d ../download ]; then mkdir ../download; fi
 16 
 17 $(TARGET): $(OBJS)
 18 >---$(CXX) -o $@ $(REAL_LDFLAGS) $^
 19 
 20 .cpp.o:
 21 >---$(CXX) -c $(REAL_CXXFLAGS) $<
 22 
 23 clean:
 24 >----rm -rf $(TARGET) $(OBJS)
 25 >----rm -rf ../$(TARGET)
 26 
 27 debug:
 28 >---$(MAKE) OPTIMIZATION="" DEBUG="-g -ggdb -g3"
 29 
 30 gprof:
 31 >---$(MAKE) PROF="-pg" 

你可能感兴趣的:(C++,linux,源代码,C语言)