一个简单的Makefile模版

说明:

    linux下编程在不实用IDE的情况下,基本的工具有vim+gcc+gdb。不过个人感觉很原始。不过高手们都说这样才能显得高端么。

    其中make工具可以实现一定的自动化。联想到linux下安装软件的时候,过程为:执行./config之类的配置文件,make编译文件,make install安装文件和使用make clean来清理安装中的垃圾。两个都使用的make工具。

模版:

#这算是一个入门级的通用Makefile模板

#--编译器部分的编写模板
CC=gcc
INCLUDES=-I/home/noah/buld_sqlite3/include
LIBS=-L/home/noah/build-sqlite3/lib -lsqlite3
CCFLAGS=-g -Wall -O0

#--编译目标的变量化
SRCS=$(wildcard*.c)
OBJS=$(SRCS:.c=.o)  #这条语句的作用是OBJS的值是将SRCS中的.c替换为.o。比如说SRCS=main.c hello.c的话那么OBJS就是main.o hello.o了。

#--工作主体部分
my_app:$(OBJS)
    $(CC) $^ -o $@ $(INCLUDES) $(LIBS)
%.o:%.c
    $(CC) -c $< $(CCFLAGS)

#--扩展收尾部分
.PHONY:clean  #“伪目标”并不是一个文件,只是一个标签
clean:
    rm *.o


 

################    附加说明      #####################
#如果不想显示命令的化,可以在命令前加“@”。
#如果要让一条命令影响下一条命令的化,将两个命令写到同一行中
       --典型应用是进入文件夹。
#$@(目标文件),$^(所有的依赖文件),$<(第一个依赖文件)
#OBJS+=main.o表示追加变量值
#其中“%”表示模式,而应用在模式中的"$<"将是符合模式的一系列的文件集。

小结:

这个例子还是很初级的,也挺实用的。今后多用用>.<

不过还有一些改进,比如说源文件分布在不同的目录下的时候怎么用。。。

未完待续。。。

原文地址:https://www.cnblogs.com/davidyang2415/p/2424916.html