Makefile 编写实例
make命令常用的三个选项:
1.-k:它的作用是让make命令在发现错误的时候仍然继续执行.我们可以利用这个选项在一次操作中发现未编译成功的源文件.
2.-n:它的作用是让make命令输出将要执行的操作步骤,而不是真正执行这些操作.
3.-f <filename>:它的作用是告诉make命令将哪个文件作为makefile文件.如果未使用这个选项,make命令将依次查找当前目录下的makefile文件,Makefile文件.
Makefile文件中,将第一个目标定义为all,然后列出其他从属目标,这样可以明确地告诉make命令,在未指定特定目标的时候,默认情况下应该创建哪个目标.
1 all: myapp 2 #which compiler, 符号#表示注释. 3 CC = gcc #定义一个宏,用$(CC)引用 4 #Where to install 5 INSTDIR = /usr/local/bin 6 #Where are include files kept 7 INCLUDE = . 8 #Options for development 9 CFLAGS = -g -Wall -ansi 10 11 myapp: main.o 2.o 3.o 12 $(CC) -o myapp main.o 2.o 3.o #必须以tab键开头,空格不行 13 main.o: main.c a.h 14 $(CC) -I$(INCLUDE) $(CFLAGS) -c main.c 15 2.o: 2.c a.h b.h c.h 16 $(CC) -I$(INCLUDE) $(CFLAGS) -c 2.c 17 3.o: 3.c a.h b.h c.h 18 $(CC) -I$(INCLUDE) $(CFLAGS) -c 3.c 19 20 clear: 21 #rm命令以-开头,含义是让make命令忽略rm命令执行的结果. 22 -rm main.0 2.o 3.o 23 install: myapp 24 #必须在每行后面添加反斜杠\,让所有这些shell脚本命令在逻辑上处于同一行. 25 #下面这个命令以@开头,表示make在执行这些规则之前不会在标准输出上显示命令本身. 26 @if [ -d $(INSTDIR) ]; \ 27 then \ 28 cp myapp $(INSTDIR); \ 29 chomd a+x $(INSTDIR)/myapp; \ 30 chomd og-w $(INSTDIR)/myapp; \ 31 echo "Installed in $(INSTDIR)"; \ 32 else \ 33 echo "Sorry, $(INSTDIR) does not exit"; \ 34 fi
下面三个命令:
make
make clear
make install