makefile⽬标:依赖⽂件写法
简要说下makefile的⼀个基本格式:
⽬标:依赖⽂件(⽬标)
【tab】命令
“⽬标” :是你要⽣成的或操作的命令的索引
“依赖” :是⽣成⽬标依赖的⽂件或⽬标【依赖⽂件的任⼀处改动,将导致已存在的⽬标⽂件过期】
“命令” :是为了⽣成⽬标的给shell执⾏的命令
需要注意的是,依赖的作⽤:
【依赖⽂件的任⼀处改动,将导致已存在的⽬标⽂件过期】
依赖的作⽤就是决定⽬标是否过期,是否需要重新编译。
举个例⼦:
#include<stdio.h>
#include"mylib1.h"
#include"mylib2.h"
int main(int argc,char argv[]){
printf("hello world!\n");
}
我的makefile可以写成
helloworld : stdio.h mylib1.h mylib2.h other.o
gcc -o helloworld helloworld.c
也可以写成
helloworld : other.o
gcc -o helloworld helloworld.c
前者希望在stdio.h mylib1.h,mylib2.h,other.o 改变的时候重新编译helloworld.c,后者希望仅仅在other.o改变的时候重新编译helloworld.c。
因此,
你想helloworold在什么改变的时候重新编译,就把什么写在依赖⾥。这就是依赖,并不死板的规定所有头⽂件必须写在依赖⾥。(不过⼀般⽽⾔,为了⽬标能正常执⾏,都希望⾃⼰写得头⽂件发⽣了改变,重新编译⽬标)
========================================================================================
依赖的另外⼀个常做⽤途是:执⾏指定的⽬标
例如:
.PHONY: all
all : helloworld clean
makefile phonyhelloworld:helloworld.o
gcc helloworld.o -o helloworld
helloworld.o:
gcc -c helloworld.c
clean:
rm helloworld.o
all作为终极⽬标(即makefile的最上⾯的第⼀个⽬标),依赖helloworld和clean,因此,执⾏⽣成all⽬标前(实际上由于all⽬标没有命令,因此在处理完依赖后直接退出,并没有all⽣成),会先执⾏helloworld和clean⽬标。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论