Makefile编写

继续联系写小程序

假设我们有下面这样的一个程序,源代码如下: 

/*  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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值