分页: 1 / 1

一个Makefile

发表于 : 2011-09-14 15:23
llxlf2012
最近对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

Re: 一个Makefile

发表于 : 2011-09-14 16:20
eexpress
就是特殊点点的bash脚本。

Re: 一个Makefile

发表于 : 2011-09-22 1:20
bzhao
9,10中的两个冒号::,我也不懂,建议楼主看任何一本书,一般书会提供从最简单的方法讲解原理,我看过:
http://product.china-pub.com/5363

Re: 一个Makefile

发表于 : 2011-11-13 0:00
old_liu
没见过这种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)