makefile通常用于源代码编译;但是,作为依赖机制,make
可以有更多用途。
对于一个小例子,我有一个每天运行的脚本,它可能会根据一些网络抓取更新或创建一个目录中的'* .csv.gz'文件;所有gzip压缩文件需要合并到一个文件中,如果有新文件,显然需要运行合并过程。
在我的例子中,以下makefile完成了这项工作:
consolidation: datasummary.pcl
datasummary.pcl: *.csv.gz
consolidate.py
cron作业运行更新过程,然后make consolidation
;如果datasummary.pcl
文件比任何*.csv.gz
文件旧,则consolidate.py
会运行。
我对有关makefile的异常(即不是源代码编译)用法的想法非常感兴趣。还有什么其他有趣的makefile用法示例?
我们假设我们谈论GNU make;否则,请注明版本。
答案 0 :(得分:1)
我记得几年前看到过使用Makefiles启动Linux系统的事情。将各个系统组件设置为目标,make会首先加载依赖项,就像make一样。我相信它们的启动速度令人印象深刻。这就是导致Debian / Ubuntu中的dependency-based boot的原因。
答案 1 :(得分:1)
在我工作的系统上,我们使用makefile和一些脚本为named,dhcpd和pxe引导生成配置文件。输入文件的行如下:
ipaddr name alias1 alias2 # model os printer
例如:
192.168.0.1 battledown nfs dns ldap # x3550 RHEL5u4 brother-color
然后我们有一个makefile,它通过各种脚本运行该输入文件以生成适当的配置。然后它将重新启动其配置已更改的任何守护进程。