简单使用makefile V1.0

来源:互联网 发布:一元秒杀包邮 淘宝 编辑:程序博客网 时间:2024/06/01 08:23

最近,折腾了下LINUX下的makefile。对于makefile,各种说法是,makefile是一种指导自动化编译的规则集合。通过它,程序员指定了编译器,源文件,目标文件的编译顺序。极大的提高了编译速度。特别是project有多个源文件时。WINDOWS下,更多的使用IDE,点个按钮就可以完成编译。相比之下,LINUX有一种GEEK的风格。噼里啪啦敲键盘,然后完成编译。

在学习编程的最开始阶段,程序不大,几行,几十行也就结束了,一般都在一个文件中,编译时,输入命令行 gcc 1.c ,如果成功,默认输出a.out。在命令行下输入./a.out,显示执行结果。OK。好像没有什么问题~

但是,不可能总是菜鸟吧?程序不可能总是几十行吧?当几十行变为几百行,几千行,一个源文件变为100个源文件,甚至更多,还这么整不是要累死程序员的节奏?幸好,我们有了makefile这个神器,极大的减轻了我们的重复的体力劳动。只要编写一个makefile,需要编译时,输入make就OK。如果需要重新编译,输入make clean;make,工作量少的不是一点点哦。


假如有3个C文件,2个头文件,命名为main.c,1.c,2.c 1.h 2.h.可执行文件名称x。

那么makefile这么写,将以下文字输入到一个文件中,文件名称makefile。

CC=gcc  #指定编译器

OBJECT=main.o 1.o 2.o  #目标文件,*.o

TARGET=x #可执行文件


#目标文件生成可执行文件

$(TARGET):$(OBJECT)

                              $(CC) $(OBJECT) -o $(TARGET)  #此行以TAB开始!下同,抱歉,因为在博客环境下,无法打出TAB。


#main.o,注意,加入非标准库 头文件

main.o:main.c 1.h 2.h    #编译main.c,

                          $(CC) -c main.c

#1.o

1.o: 1.c

                      $(CC) -c 1.c

#2.o

2.o:2.c

               $(CC) -c 2.c

#清理编译结果

clean:

             rm -rf $(TARGET) $(OBJECT)  #删除生成文件,


以后,如果要增加或者删除源文件,记得修改makefile规则,make clean;make就可以了。所以呢,以后编程时,先建立一个makefile,后面需要什么,改makefile,然后make clean;make。等等,待我喝杯水~



原创粉丝点击