继续联系写小程序
假设我们有下面这样的一个程序,源代码如下:
/* main.c */
#include "mytool1.h"
#include "mytool2.h"
int main(int argc,char **argv)
{
mytool1_print("hello");
mytool2_print("shelly");
}
/* mytool1.h */
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
void mytool1_print(char *print_str);
#endif
/* mytool1.c */
#include "mytool1.h"
void mytool1_print(char *print_str)
{
printf("This is mytool1 print %s\n",print_str);
}
/* mytool2.h */
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str);
#endif
/* mytool2.c */
#include "mytool2.h"
void mytool2_print(char *print_str)
{
printf("This is mytool2 print %s\n",print_str);
}
编写Makefile文件:
main:main.o mytool1.o mytool2.o
g++ -o main main.o mytool1.o mytool2.o
main.o:main.cpp mytool1.h mytool2.h
g++ -c main.cpp
mytool1.o: mytool1.cpp mytool1.h
g++ -c mytool1.cpp
mytool2.o:mytool2.cpp mytool2.h
g++ -c mytool2.cpp
在Makefile中#开始的行都是注释行.
Makefile中最重要的是描述文件的依赖关系的说明.
一般的格式是:
target: components
TAB rule
第一行表示的是依赖关系.第二行是规则.
比如说我们上面的那个Makefile文件的第一行
main:main.o mytool1.o mytool2.o
表示我们的目标(target)main的依赖对象(components)是main.o mytool1.o mytool2.o 当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令.就象我们的上面那个Makefile第二行所说的一样要执行 g++ -o main main.o mytool1.o mytool2.o
注意规则一行中的TAB表示那里是一个TAB键
Makefile编写完毕
make
./main
最终结果:
this is mytool1 print hello
this is mytool2 print shelly