main.c
#include<stdio.h> #include"chen_print.h" int main(int argc , char * argv ){ chen_print("haha , I'm coming makefile "); return 0; }
chen_print.c
#include<stdio.h> void chen_print( char * str ){ printf("you enter string is : %s",str); }
chen_print.h
void chen_print( char * str );
makefile
main:chen_print.h libchen_print.a gcc main.c -o main -L./ -lchen_print libchen_print.a:chen_print.o ar -r libchen_print.a chen_print.o chen_print.o:chen_print.h chen_print.c gcc -c chen_print.c -o chen_print.o clean: rm -f *.o rm -f *.a rm -f main
简单介绍一下makefile的格式
target:filename1 filename2
<tab>common
其实makefile的规则很简单,就是看你的目标文件(target)做依赖的文件(filename1 filename2)是否有更新,如果依赖文件更新了,它就会自动执行下面的shell命令
注意,shell命令必须要一<table>键做开头,makefile的格式强制这样,没有办法。如果你觉得<tab>不够美观,建议你修改tab的跳转空格数:
vi 上执行:set ts=3
或者直接修改vi的默认配置文件
vi ~/.vimrc
如果原文件已经存在: set ts=n ,那样修改它就好了,如果不存在这句,那么直接在文件末尾加上即可。
我的makefile中还写了clean的命令,是做环境清理用的,执行
$>make clean
它就会执行下面清理的动作
同理,我们在使用
$>make install
这些命令时,实质上就是执行一些shell动作
******************************************
自己学习的网站资料:
详细介绍makefile的用法,入门必备
http://blog.csdn.net/liang13664759/article/details/1771246
有一些入门基础后看的进阶文章
http://goodcandle.cnblogs.com/archive/2006/03/30/278702.html