开发中常常有这样的需求:一个不算简单的目录结构,需要一个统一的Makefile来进行编译管理。这时候最简单的做法就是遍历--搜罗所有的头文件和代码文件,使用统一的规则gcc -Ixx -o *.o *.c<pp>然后打扫战场,处理尸体;最标准的做法就是在每个子目录下编程时随手加上Makefile, 然后再百川归海,有统一的父目录(确切的说是始祖)Makefile来遥控, 但是,,,,你不觉得烦吗?
其实Makefile提供了很多方法(函数)来方便懒人的,下面有个小例子:
LIBS= -L/usr/lib /
-L../MicroSip6.0 /
-L./lib /
-lssl /
-lcrypto /
ARCH=
MW_DIR=$(PWD)
CC = $(ARCH)gcc
LD = $(ARCH)ld
AS = $(ARCH)as
CPP = $(ARCH)g++
AR = $(ARCH)ar
MW_DIR=.
INCLUDE = -I.
SAMDIR=$(MW_DIR)
SAMINCH=$(shell find $(SAMDIR) -name "*.h*")
:::找到了,大家可以看到Makefile是可以使用shell命令的,现在结果存储在SAMINCH。
TMPDIR=$(dir $(SAMINCH))
dir是个函数,就是列出SAMINCH目录前缀(/*.h之前的字串)的结果。
SAMINCDIR=$(sort $(TMPDIR))
sort也是个函数,这是为了去除重复的目录名。
INCLUDE += $(foreach temp, $(SAMI