标签:第一个 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 $<
标签:第一个 argc define 问题 make nbsp 程序员 好的 意义
原文地址:https://www.cnblogs.com/sunbines/p/14534495.html