Make语法规则:
通常规则的语法格式如下:
TARGETS : PREREQUISITES
              COMMAND...

或者:
TARGETS : PREREQUISITES ; COMMAND
      
COMMAND
       
...


1.函数wildcard
  
用法: $(wildcard PATTERN)
   解释:
Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。
  例子:
GNU Make笔记ifneq ($(wildcard $(USR_LIB_DIR)/libboost_thread.so),)
GNU Make笔记LIB_BOOST_THREAD :
= -lboost_thread 

   objects := $(patsubst %.c,%.o,$(wildcard *.c))
  
foo : $(objects)
        
cc -o foo $(objects) 
GNU Make笔记

2.
变量VPATH
   特殊变量“VPATH”。通过变量“VPATH”可以指定依赖文件的搜索路径,当规则的依赖文件在当前目录不存在时,make会在此变量所指定的目录下去寻找这些依赖文件。
     
定义变量“VPATH”时,使用空格或者冒号(:)将多个需要搜索的目录分开。
     
VPATH = src:../headers

依赖指定了两个搜索目录,“src”和“../headers”。对于规则“foo:foo.c”如果“foo.c”存在于“src”目录下,此规则等价于“foo:src:/foo.c”。
注意:此VPATH变量只对依赖有效,对于命令command无效.


3.变量vpath
 
   vpath”关键字(全小写的)。它不是一个变量,而是一个make的关键字,它所实现的功能和上一小节提到的“VPATH”变量很类似,但是它更为灵活。它可以为不同类型的文件(由文件名区分)指定不同的搜索目录。
      其用法有三种:
           (1)vpath PATTERN DIRECTORIES      为所有符合模式“PATTERN”的文件指定搜索目录“DIRECTORIES
         (2)
vpath PATTERN    清除之前为符合模式“PATTERN”的文件设置的搜索路径。
         (3)
vpath  清除所有

eg. vpath %.h ../headers

    其含义是:Makefile中出现的.h文件;如果不能在当前目录下找到,则到目录“../headers”下寻找。

一个使用vpath的例子:

GNU Make笔记vpath %.h inc
GNU Make笔记vpath 
%.cpp src
GNU Make笔记vpath 
%.c src
GNU Make笔记
GNU Make笔记
GNU Make笔记CC 
= g++
GNU Make笔记USR_LIB_DIR 
= /usr/lib
GNU Make笔记USR_LOCAL_LIB_DIR 
= /usr/local/lib
GNU Make笔记INCLUDES 
= inc
GNU Make笔记APPS 
= QoeGW
GNU Make笔记LIB_XMLRPC_CLIENT 
= $(shell xmlrpc-c-config client --ldadd)
GNU Make笔记LIBS 
= -lboost_program_options -lboost_thread-mt -lpcap -llog4cxx $(LIB_XMLRPC_CLIENT)
GNU Make笔记
GNU Make笔记OBJS 
= G1070.o logInFile.o pcapIPv6.o parseRTP.o rtpQueue.o xmlrpc_client.o QoeGW.o
GNU Make笔记
GNU Make笔记all:
$(APPS)
GNU Make笔记
GNU Make笔记
$(APPS):$(OBJS)
GNU Make笔记    
$(CC) $(OBJS) -$(APPS) $(LIBS) -$(INCLUDES)
GNU Make笔记
GNU Make笔记
%.o:%.cpp
GNU Make笔记    
$(CC) --$(INCLUDES) $<
GNU Make笔记
GNU Make笔记.PHONY:clean
GNU Make笔记clean:
GNU Make笔记    rm 
*.o $(APPS)
GNU Make笔记


待更新....

相关文章: