Makefile,添加位于parent目录下的headers(里面不允许移动!)
Makefile, add headers located in parent directory (Not allowed to move inside!)
dir1
--- myheader1.h
--- myheader2.h
src
--- prog.c
--- makefile
prog.c
#include <stdio.h>
#include "myheader1.h"
#include "myheader2.h"
int main()
{
func1();
func2();
return 0;
}
myheader1.h
void func1()
{
printf("Header1\n");
}
myheader2.h
void func2()
{
printf("Header2\n");
}
寻找有关如何从 parent 目录添加 header 的解决方案,我发现了 this 问题。但这对我不起作用,我仍然收到找不到 header 文件的错误。
No rule to make target 'myheader1.h', needed by 'prog.o'. Stop.
生成文件
CFLAGS = -c -Wall -I.. myheader1.h
prog : prog.o
cc -o prog prog.o
prog.o : prog.c myheader1.h
cc $(CFLAGS) prog.c
我做错了什么?以及如何添加第二个 header 而不会使行变得非常长或丑陋?
prog.o : prog.c myheader1.h
这一行表示 prog.o
取决于两个文件,prog.c
和 myheader1.h
。 prog.c
存在,但 myheader1.h
不存在(至少不在同一目录中)。
应该是
CFLAGS = -Wall -I..
prog.o : prog.c ../myheader1.h
cc $(CFLAGS) -c prog.c
注:
../myheader1.h
在先决条件列表中,而不是 myheader1.h
- headers 根本不应在编译器命令行中列出
-c
不属于 CFLAGS
dir1
--- myheader1.h
--- myheader2.h
src
--- prog.c
--- makefile
prog.c
#include <stdio.h>
#include "myheader1.h"
#include "myheader2.h"
int main()
{
func1();
func2();
return 0;
}
myheader1.h
void func1()
{
printf("Header1\n");
}
myheader2.h
void func2()
{
printf("Header2\n");
}
寻找有关如何从 parent 目录添加 header 的解决方案,我发现了 this 问题。但这对我不起作用,我仍然收到找不到 header 文件的错误。
No rule to make target 'myheader1.h', needed by 'prog.o'. Stop.
生成文件
CFLAGS = -c -Wall -I.. myheader1.h
prog : prog.o
cc -o prog prog.o
prog.o : prog.c myheader1.h
cc $(CFLAGS) prog.c
我做错了什么?以及如何添加第二个 header 而不会使行变得非常长或丑陋?
prog.o : prog.c myheader1.h
这一行表示 prog.o
取决于两个文件,prog.c
和 myheader1.h
。 prog.c
存在,但 myheader1.h
不存在(至少不在同一目录中)。
应该是
CFLAGS = -Wall -I..
prog.o : prog.c ../myheader1.h
cc $(CFLAGS) -c prog.c
注:
../myheader1.h
在先决条件列表中,而不是myheader1.h
- headers 根本不应在编译器命令行中列出
-c
不属于CFLAGS