linux中C的Makefile多个文件目录,以及VPATH的简单示例

文件目录如下:

  --------------------- l.c

  --------------include

                         |__ l.h

  --------------------- z.c

  --------------------- Makefile

其中 l.c include z.c 在同一个目录中,而 z.c 是文件。在include文件夹中有一个l.h文件。

其中 z.c 文件代码如下:

*-*-*-*-*-*-*-*-*-*-*-* z.c 文件如下 *-*-*-*-*-*-*-*-*-*-**-*

   #include<stdio.h>                                                                         
   #include"l.h"
   int main()
   {
           hello();
           return 0;
   }

*-*-*-*-*-*-*-*-*-*-*-*-* l.c 文件如下 *-*-*-*-*-*-*-*-*-*-*-*

  #include<stdio.h>                                                                         
  #include"l.h"
   void hello()
   {
           printf("I am form l.c file\n");
   }
*-*-*-*-*-*-*-*-*-*-*-* l.h 文件如下 *-*-*-*-*-*-*-*-*-*-*-*-*-*

/*************************************************************                            
    * Author : jonathan
    * time   : 2017,3,10 10:37
    * effect : .h file
    *************************************************************/
   #ifndef _L_H_
   #define _L_H_
   
   void hello();
  
   #endif

*-*-*-*-*-*-*-*-*-*-* Makefile 文件如下 *-*-*-*-*-*-*-*-*-*-*-*

  #VPATH=include                                                                            
  vpath %.h include
  o=l.o z.o
  hello:$(o)
          gcc -o $@ $(o)
  z.o:z.c l.h
          gcc -I include -c $<
  l.o:l.c l.h
          gcc -I include -c $<
  .PHONY:clean
  clean:
          rm *.o
*-*-*-*-*-*-*-*-*-*-* end *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
首先其中一些符号

$<  是代表第一个依赖文件的名称

$@ 是代表目标文件的名称

然而第一代码行 #VPATH=include注释了的因为他和紧接着的下面的一行代码是一样的功能用起一即可。

关于Vpath的一些解释,给一个我在研究时一位大佬的解释和具体用法。 -> blog.csdn.net/changli_90/article/details/7881905

*-*其中值得注意的是使用VPATH变量的时候并不能直接自动的搜索文件,所以gcc的时候有 -I include 只有这样才能从include找到相应文件。*-*

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值