zoukankan      html  css  js  c++  java
  • 【makefile】 $@ $^ %< 的使用

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

     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 }
    10 
    11 /* mytool1.h */
    12 #ifndef _MYTOOL_1_H
    13 #define _MYTOOL_1_H
    14 
    15 void mytool1_print(char *print_str);
    16 
    17 #endif
    18 
    19 /* mytool1.c */
    20 #include "mytool1.h"
    21 
    22 void mytool1_print(char *print_str)
    23 {
    24     printf("This is mytool1 print %s
    ",print_str);
    25 }
    26 
    27 /* mytool2.h */
    28 #ifndef _MYTOOL_2_H
    29 #define _MYTOOL_2_H
    30 
    31 void mytool2_print(char *print_str) ;
    32 
    33 #endif
    34 
    35 /* mytool2.c */
    36 #include "mytool2.h"
    37 
    38 void mytool2_print(char *print_str)
    39 {
    40     printf("This is mytool2 print %s
    ",print_str);
    41 }
    View Code

    常规的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有三个重要的变量,分别如下:

    1. $@ :目标文件

    2. $^ 所有的依赖文件

    3. $< 第一个依赖文件

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

    参考资料

    1. 跟我一起学makefile

  • 相关阅读:
    洛谷P1455 搭配购买
    洛谷1341 无序字母对
    打击犯罪
    Cheese
    [noip2002] 产生数
    分治算法-----二分求最大最小
    yl 练习
    cj 练习
    雅礼2018-03-19洛谷作业 2
    雅礼2018-03-19洛谷作业
  • 原文地址:https://www.cnblogs.com/sunbines/p/14534495.html
Copyright © 2011-2022 走看看