Makefile学习实例1

知识1:

#在Makefile中书写在同一行中的多个命令属于一个完整的shell命令行,书写在独立行的一条命令是一个独立的shell命令行。
#因此:在一个规则的命令中,命令行“cd”改变目录不会对其后的命令的执行产生影响。就是说其后的命令执行的工作目录不会是之前使用“cd”进入的那个目录。
#如果要实现这个目的,就不能把“cd”和其后的命令放在两行来书写。而应该把这两条命令写在一行上,用分号分隔。这样它们才是一个完整的shell命令行。



实现多级指定编译。

#add by gujintong. 16/8/9
#源码包编译MAKEFILE

#libevent安装路径
LIBEVENT_INSTALL_PATH = "$(shell pwd)/libevent-2.0.21-stable/_install"

all: build FORCE
#编译准备工作
libevent.prepare:
	#@./libevent.build
	tar -xvf libevent-2.0.21-stable.tar.gz ;\
	cd libevent-2.0.21-stable ;\
	./configure --disable-shared  --prefix=${LIBEVENT_INSTALL_PATH} --host=powerpc-e300c3-linux CC=${CROSS_COMPILE}gcc CXX=${CROSS_COMPILE}g++ ;\
	cd .. 
	
#编译	
libevent.make:
	$(MAKE) -C libevent-2.0.21-stable install
#编译收尾工作
libevent.finish:
	if [ -d  ${LIBEVENT_INSTALL_PATH}/lib ] ;	then \
		cp -rf ${LIBEVENT_INSTALL_PATH}/lib/*.a $(SYSROOT)/usr/lib ;\
	fi
#目标和依赖
libevent.build : libevent.prepare libevent.make libevent.finish

libevent.clean : 
	cd libevent-2.0.21-stable ;\
	make distclean
	
build: FORCE
	$(MAKE) libevent.build

clean: FORCE
	$(MAKE) libevent.clean	
	
.PHONY: libevent.prepare libevent.make libevent.finish libevent.build libevent.clean build clean help FORCE	


上一级Makefile如下:

DEPENDS := $(TOPDIR)/Makefile
export DEPENDS

all: build FORCE

prepare:
	@mkdir -p $(OUTPUT_DIR)
	@mkdir -p $(SYSROOT)
	@mkdir -p $(SYSROOT)/bin $(SYSROOT)/lib
	@mkdir -p $(SYSROOT)/usr
	@mkdir -p $(SYSROOT)/usr/bin $(SYSROOT)/usr/lib

config: tools/config/mconf tmp/.config-target.in tmp/.config-package.in FORCE
	if [ \! -f $(OUTPUT_DIR)/.config -a -e $(BUILD_DIR)/.config ]; then \
		cp $(BUILD_DIR)/.config $(OUTPUT_DIR)/.config; \
	fi
	$< Config.in

tools.% rootfs.% modules.% sdk.% apps.% plugins.% firmware.%: prepare FORCE
	$(MAKE) -C $(patsubst %.$*,%,$@) $*

boot.% loader.% kernel.% : prepare FORCE
	$(MAKE) -C $(patsubst %.$*,%,$@) $* -f nosx.mk
packages.% : prepare FORCE
	$(MAKE) -C $(TOPDIR)/packages $*
	
build: FORCE
	$(MAKE) tools.build
	$(MAKE) boot.build
	$(MAKE) loader.build
	$(MAKE) kernel.build
	$(MAKE) rootfs.build
	$(MAKE) modules.build
	$(MAKE) sdk.build
	$(MAKE) apps.build	
	$(MAKE) plugins.build
	$(MAKE) firmware.build
	$(MAKE) packages.build

clean: FORCE
	$(MAKE) tools.clean
	$(MAKE) boot.clean
	$(MAKE) loader.clean
	$(MAKE) kernel.clean
	$(MAKE) rootfs.clean
	$(MAKE) modules.clean
	$(MAKE) sdk.clean
	$(MAKE) apps.clean
	$(MAKE) plugins.clean
	$(MAKE) firmware.clean
	$(MAKE) packages.clean

help:
	@cat $(TOPDIR)/docs/commands.txt

.PHONY: prepare config build clean help FORCE





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值