编写Makefile
view plaincopy to clipboardprint?
/* filename: main.c */
#include "mytool1.h"
#include "mytool2.h"
int main(int argc,char **argv)
{
myprint1("hello");
myprint2("world");
}
/* filename: mytool1.h */
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
void myprint1(char *print_str);
#endif
/* filename: mytool1.c */
#include "mytool1.h"
void myprint1(char *print_str)
{
printf("This is mytool1 print %s\n",print_str);
}
/* filename: mytool2.h */
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void myprint2(char *print_str);
#endif
/* filename: mytool2.c */
#include "mytool2.h"
void myprint2(char *print_str)
{
printf("This is mytool2 print %s\n",print_str);
}
/* filename: main.c */
#include "mytool2.h"
{
myprint1("hello");
myprint2("world");
}
/* filename: mytool1.h */
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
void myprint1(char *print_str);
#endif
#include "mytool1.h"
void myprint1(char *print_str)
{
printf("This is mytool1 print %s\n",print_str);
}
/* filename: mytool2.h */
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void myprint2(char *print_str);
#endif
/* filename: mytool2.c */
#include "mytool2.h"
void myprint2(char *print_str)
{
printf("This is mytool2 print %s\n",print_str);
}
我们可以这样来编译:
view plaincopy to clipboardprint?
#此行为注释
main: main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o
main.o: main.c mytool1.h mytool2.h
gcc -c main.c
mytool1.o: mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o: mytool2.c mytool2.h
gcc -c mytool2.c
#此行为注释
main: main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o
main.o: main.c mytool1.h mytool2.h
gcc -c main.c
mytool1.o: mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o: mytool2.c mytool2.h
gcc -c mytool2.c
有Makefile文件后,不管我们什么时候修改了源程序当中的什么文件,我们只要执行make命令,我们的编译器都只会去编译与我们修改的文件有关的文件,其它的文件不会处理。
view plaincopy to clipboardprint?
#这是简化后的Makefile
main: main.o mytool1.o mytool2.o
gcc -o $@ $^
main.o: main.c mytool1.h mytool2.h
gcc -c $<
mytool1.o: mytool1.c mytool1.h
gcc -c $<
mytool2.o: mytool2.c mytool2.h
gcc -c $<
#这是简化后的Makefile
main: main.o mytool1.o mytool2.o
gcc -o $@ $^
main.o: main.c mytool1.h mytool2.h
gcc -c $<
mytool1.o: mytool1.c mytool1.h
gcc -c $<
mytool2.o: mytool2.c mytool2.h
gcc -c $<
4. Makefile 的缺省规则
view plaincopy to clipboardprint?
#这是再一次简化后的Makefile
main: main.o mytool1.o mytool2.o
gcc -o $@ $^
..c.o:
gcc -c $<