Freewill123
Freewill123
采纳率100%
2017-04-08 08:28 阅读 1.7k

写Makefile时头文件中包含路径分割符怎么办

5

小白求问,这两天一直在尝试Makefile的书写时卡在路径分隔符了,因为做的项目中有出现类似于#include的文件,所以下面我就自己用一个简单的工程来进行试验,请各位大神不吝赐教。
我的系统环境:Ubuntu14.04
文件夹:practice9:main.c add.c Makefile
practice2 : math1.h defi.h
main.c文件

 #include<stdio.h>
 #include"workspace/practice2/math1.h"
 int main()
 {
     int result = 0;
        result = add(4,A);
        printf("result:%d\n",result);
        return 0;
 }

add.c文件

 #include"math1.h"
 int add(int x,int y)
 {
     return x+y;
 }

math1.h文件

 #include"defi.h"
 int add(int x,int y);

defi.h文件

#define A 1 

Makefile文件

 vpath %.h /home/free/workspace/practice2
 edit: main.o add.o
     gcc -o edit main.o add.o
main.o: main.c math1.h
    gcc -c $< -I /home/free/workspace/practice2
add.o: add.c
    gcc -c $< -I /home/free/workspace/practice2
clean:
    rm edit main.o add.o

运行在~/workspace/practice9目录make命令时找不到math1.h文件,如果把math1.h文件中的“workspace/practice2/math1.h”换成“math1”就可以运行,请教各位大神这种有路径分割符的头文件怎样弄啊,谢谢各位了~

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    zqbnqsdsmd zqbnqsdsmd 2017-04-08 15:28
  • nothingbutpassion nothingbutpassion 2017-04-08 16:26

    以下几点供参考:
    1)vpath告诉make可在/home/free/workspace/practice2目录下查找make所需要的.h文件
    2)-I选项告诉gcc可在/home/free/workspace/practice2目录下查找.c文件中include的.h文件
    3)/home/free/workspace/practice2目录下能找到math1.h,  但是找不到workspace/practice2/math1.h,所以报错。因为路径/home/free/workspace/practice2/math1.存在,而路径/home/free/workspace/practice2/workspace/practice2/math1.h不存在

    点赞 1 评论 复制链接分享

相关推荐