小白求问,这两天一直在尝试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”就可以运行,请教各位大神这种有路径分割符的头文件怎样弄啊,谢谢各位了~
https://zhidao.baidu.com/question/262935592613791885.html
以下几点供参考:
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不存在