码迷,mamicode.com
首页 > 其他好文 > 详细

makefile 中 $@ $^ %< 使用

时间:2021-03-16 13:48:47      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:第一个   argc   define   问题   make   nbsp   程序员   好的   意义   

 

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

1 /* main.c */
2 #include "mytool1.h"
3 #include "mytool2.h"
4 
5 int main(int argc,char **argv)
6 {
7     mytool1_print("hello");
8     mytool2_print("hello");
9 }
1 /* mytool1.h */
2 #ifndef _MYTOOL_1_H
3 #define _MYTOOL_1_H
4 
5 void mytool1_print(char *print_str);
6 
7 #endif
1 /* mytool1.c */
2 #include "mytool1.h"
3 
4 void mytool1_print(char *print_str)
5 {
6     printf("This is mytool1 print %s\n",print_str);
7 }
1 /* mytool2.h */
2 #ifndef _MYTOOL_2_H
3 #define _MYTOOL_2_H
4 
5 void mytool2_print(char *print_str) ;
6 
7 #endif
1 /* mytool2.c */
2 #include "mytool2.h"
3 
4 void mytool2_print(char *print_str)
5 {
6     printf("This is mytool2 print %s\n",print_str);
7 }

 为此,聪明的程序员们想出了一个很好的工具来做这件事情,这就是make。我们只要执行以下make,就可以把上面的问题解决掉。在我们执行make之 前,我们要先编写一个非常重要的文件。--Makefile。对于上面的那个程序来说,可能的一个Makefile的文件是:

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有三个非常重要的变量。分别是$@,$^,$<表示的意义分别是:

$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。

如果我们使用上面三个变量,那么我们可以简化我们的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 中 $@ $^ %< 使用

标签:第一个   argc   define   问题   make   nbsp   程序员   好的   意义   

原文地址:https://www.cnblogs.com/sunbines/p/14534495.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!