makefile 里的函数跟它的变量很相似——使用的时候,你用一个 $ 符号跟开括号,函数名,空格后跟一列由逗号分隔的参数,最后用关括号结束。
   例如,在 GNU Make 里有一个叫 'wildcard' 的函数,它有一个参数,功能是展开成一列所有符合由其参数描述的文件名,文件间以空格间隔。
   你可以像下面所示使用这个命令: 
   
SOURCES = $(wildcard *.c) 
   
这行会产生一个所有以 '.c' 结尾的文件的列表,然后存入变量 SOURCES 里。当然你不需要一定要把结果存入一个变量。 
另一个有用的函数是 patsubst ( patten substitude, 匹配替换的缩写)函数。它需要3个参数——第一个是一个需要匹配的式样,第二个表示用什么来替换它,第三个是一个需要被处理的由空格分隔的字列。例如,处理那个经过上面定义后的变量, 
   
OBJS = $(patsubst %.c,%.o,$(SOURCES)) 
   
这行将处理所有在 SOURCES 字列中的字(一列文件名),如果它的结尾是 '.c' ,就用 '.o' 把 '.c'取代。注意这里的 % 符号将匹配一个或多个字符,而它每次所匹配的字串叫做一个‘柄’(stem) 。 在第二个参数里,
%被解读成用第一参数所匹配的那个柄。

例子:

include /usr/local/AFEPack/Make.global_options
 
source = $(wildcard *.cpp)
object = $(patsubst %.cpp, %.o, $(source))
LDFLAGS += -L/usr/local/AFEPack/library/lib -lAFEPack
 
all : main
 
%.o : %.cpp
     $(CXX) -c -o $@ $< $(CXXFLAGS)
 
main : $(object)
     $(CXX) -o $@ $(object) $(LDFLAGS) $(LIBS)
 
clean :
     -rm -rf $(object)
     -rm -rf main
     -rm -f *.[nes]
     -rm -f *.dx
 
   .PHONY : default clean

最新文章

  1. 联想键盘 去掉fn
  2. Android 短信的备份
  3. mysql源码解读之事务提交过程(二)
  4. JAVA运算符和优先级
  5. spring配置详解
  6. ubuntu下mysql的环境搭建及使用
  7. 将字符串写进txt中方式
  8. currentStyle和getComputedStyle的兼容写法
  9. 微软 自带 AJAX 拓展
  10. linux下的系统垃圾清理
  11. 深入浅出java常量池
  12. AutoCAD 2019 for Mac 特别版(附注册机)
  13. Java多线程之定时任务(Timer)
  14. Python之路(第三十篇) 网络编程:socket、tcp/ip协议
  15. logback异步输出日志(生产者消费者模型),并非批量写入日志。
  16. Mysql 导入导出csv 中文乱码
  17. ASP.NET MVC4中加入Log4Net日志记录功能
  18. c语言:简单排序:冒泡排序法、选择排序法、插入排序法(待写)
  19. android R文件不能识别?
  20. ES6进一步整理

热门文章

  1. C#中方法,属性与索引器
  2. Android源代码分析之Framework的MediaPlayer
  3. Qt 学习之路 :访问网络(4)
  4. Linux设备驱动编程之复杂设备驱动
  5. is not in the sudoers file.This incident will be reported
  6. 第三篇:R语言数据可视化之条形图
  7. Android Studio学习随笔-模拟耗时操作(sleep)
  8. yii2 and short_open_tag
  9. python之Lambda函数---笔记
  10. javascript中this的解析