Makefile之写demo时的通用Makefile写法

时间:2022-12-20 10:18:26

Makefile之写demo时的通用Makefile写法
[日期:2013-05-22] 来源:CSDN  作者:gqb666 [字体:大 中 小]

前面的一篇文章Makefile之大型工程项目子目录Makefile的一种通用写法介绍了大型项目子目录Makefile的一种通用写法,然而最近在写Linux网络方面的demo,一个目录下有几个文件,如果手工输命令显得太不专业了。于是按该博文的方法改编了一下Makefile,也当学习之用。该Makefile适用于一个C文件生成一个可执行程序的场景,使用该方法当工程目录内的文件有增删时无需对Makefile进行改动,可以说相当的智能。如果对patsubst、wildcard及subst函数不了解的话可参阅上述博文。同时在测试过程中,又发现了一种更简洁的写法,如代码片段2,应该是使用了某些默认规则,由于项目较忙,还未来得及深入研究,先记录下来,等空下来再研究,还望路过大侠多多指点。

1:如果在当前目录中直接make的话使用下列代码:

#General Purpose Makefile by guoqingbo
                         
objects := $(patsubst %.c,%.o,$(wildcard *.c)) 
executables := $(patsubst %.c,%,$(wildcard *.c)) 
                         
all :  $(objects)
$(objects) : %.o: %.c
    gcc -c $< -o $@
    gcc $< -o $(subst .o, ,$@)
clean :
    @rm -rf *.o *~
    @rm -rf ${executables}
 .PHONY : clean

2:后来发现下列代码也可以有相同效果,难道使用了什么默认规则,还不是很明白,先记录下来:

#General Purpose Makefile by guoqingbo 
                           
executables := $(patsubst %.c,%,$(wildcard *.c))
                           
all : $(executables)

clean : 
    @rm -rf *.o *~ 
    @rm -rf ${executables} 
.PHONY : clean

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2013-05/84679.htm