Chinaunix首页 | 论坛 | 博客
  • 博客访问: 464019
  • 博文数量: 68
  • 博客积分: 2606
  • 博客等级: 上尉
  • 技术积分: 1308
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-13 23:01
文章分类
文章存档

2012年(6)

2011年(62)

分类: LINUX

2011-05-31 18:34:17

------------------------------------------
本文为本人原创,欢迎转载!
转载请注明出处:snowboy.blog.chinaunix.net
雪夜流星
------------------------------------------
Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中纪录有文件的信息,在make时会决定在链接的时候需要重新编译哪些文件。本文从最原始的Makefile,逐步进行一点一点的改进,最终演化为模式化的写法:
 
1.###############################################
#最原始的Makefile
main:main.o fun.o
#命令前面的空白为Tab键,否则不能正常运行
 gcc main.o fun.o -o main
main.o:main.c fun.h
 gcc -c main.c -o main.o
fun.o:fun.c fun.h
 gcc -c fun.c -o fun.o
clean:
 rm -f main *.o
2.###############################################
#变量替换
OBJS=main.o fun.o
CC=gcc
CFLAGS=-c

main:$(OBJS)
 $(CC) $(OBJS) -o main
main.o:main.c fun.h
 $(CC) $(CFLAGS) main.c -o main.o
fun.o:fun.c fun.h
# $(CC) $(CFLAGS) fun.c -o fun.o
clean:
 rm -f main *.o
3.##################################################
#通配符替换
OBJS=main.o fun.o
CC=gcc
CFLAGS=-c
main:$(OBJS)
 #$^ 所有依赖文件,$@目标文件
 $(CC) $^ -o $@
main.o:main.c fun.h
 #$< 第一个依赖文件
 $(CC) $(CFLAGS) $< -o $@
fun.o:fun.c fun.h
 $(CC) $(CFLAGS) $< -o $@
clean:
 rm -f main *.o
4.######################################################
#采用隐式规则:.c文件隐式地编译为.o文件
OBJS=main.o fun.o
CC=gcc
CFLAGS=-c
main:$(OBJS)
 #$^ 所有依赖文件,$@目标文件
 $(CC) $^ -o $@
clean:
 rm -f main *.o
5.#########################################################
#模式化
OBJS=main.o fun.o
CC=gcc
CFLAGS=-c
main:$(OBJS)
 #$^ 所有依赖文件,$@目标文件
 $(CC) $^ -o $@
#模式规则 %匹配零或若干个字符
%.o:%.c
 $(CC) $(CFLAGS) $< -o $@

clean:
 rm -f main *.o
#######################################################
 
#代表注释一行
@加在命令的前面 取消命令的回显 但仍然打印错误信息
红色代表需要注意的地方
阅读(3864) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

最大行业软件2012-12-01 10:30:02

PTC Creo Elements/Pro 5.0 M070 Working for Win32-ISO 1DVD(最新多语言正式版包括简、繁体中文)

PTC Creo Elements/Pro 5.0 M070 Working for Win64-ISO 1DVD

PTC Creo Elements View (ex Product View) v10 F000 build 93 Pro Multilanguage Win32 1CD

PTC Creo Elements View (ex Product View) v10 F000 build 93 Pro Multilanguage Win64 1CD

 

PTC Pro/E WildFire+Pro/Mechancia 4.0 M110 Working for Win32-ISO 1DVD(最新多语言正式版包括简、繁体中文)

PTC Pro/E Wil

snowboy98592012-04-01 22:07:15

如何向make传参数
写了个简单的main.c
编译时键入 make cmd_debug=y 就可向make传递参数,从而达到部分编译的功能。
命令执行之前键入 -@可以在执行时不显示出命令来。

dest: main.o
-@ cc main.o -o target
-@ echo "build"

main.o: main.c
-@ cc -c main.c -o main.o
-@ echo "compile"

ifeq ($(cmd_debug),y)
- @ echo "cmd_debug is "$(cmd_debug)
else
- @ echo "cmd_debug is "$(cmd_debug)
endif