一个Makefile

编译打包和其他
回复
llxlf2012
帖子: 25
注册时间: 2011-04-21 10:06

一个Makefile

#1

帖子 llxlf2012 » 2011-09-14 15:23

最近对Makefile产生的浓厚的兴趣,也在看,但碰到很多问题,这边提供一个Makefile,会分段添出,希望大牛们帮忙解释其中含义,让我们这些初学者能有所精进
1 include config.mk
2 quiet?=true
3 ifeq ($(target),)
4 .DEFAULT:
5 @for t in $(ALL_TARGETS); do \
6 $(MAKE) --no-print-directory target=$$t $(MAKECMDGOALS) || exit $$?;\
7 done
8 all: .DEFAULT
9 clean:: .DEFAULT
10 install:: .DEFAULT
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 一个Makefile

#2

帖子 eexpress » 2011-09-14 16:20

就是特殊点点的bash脚本。
● 鸣学
头像
bzhao
帖子: 254
注册时间: 2008-07-05 2:15
系统: XUbuntu

Re: 一个Makefile

#3

帖子 bzhao » 2011-09-22 1:20

9,10中的两个冒号::,我也不懂,建议楼主看任何一本书,一般书会提供从最简单的方法讲解原理,我看过:
http://product.china-pub.com/5363
old_liu
帖子: 2
注册时间: 2011-10-15 21:23

Re: 一个Makefile

#4

帖子 old_liu » 2011-11-13 0:00

没见过这种makefile,一般makefile不这样写。
我给个简单的例子吧

CPP=g++ #设置编译器
CFLAGS=-Wall -Werror -g #选项-Wall表示显示所有warning,-Werror表示将warning看作错误,出现warning将编译不通过
#-g是调试选项,方便gdb调试
OBJS=main.o #o文件,
EXE=test #exe文件名

all:test #make命令默认选项是all 这里表示默编译test
#直接输入make命令相当于输入make all

$(EXE):$(OBJS) #依赖关系:EXE文件依赖OBJS文件
$(CPP) $(CFLAGS) $< -o $@ # $@表示":"前面的文件

%.o:%.cpp #自动寻找依赖关系。xx.o自动寻找对应的xx.cpp
$(CPP) $(CFLAGS) -c $< # $<表示“:”后面的文件

clean:#清理选项。当输入make clean时才执行。
rm -f $(OBJS)
rm -f $(EXE)
回复