在 makefile 中的 gcc 中使用 -I(大写 i) 时不起作用

问题描述 投票:0回答:1

我正在编写一个 Makefile 来运行我的 C 程序。

目录和文件如下所示,

这是我在 Makefile 中的代码

all: perimeter.o main.c 
    gcc -o program main.c perimeter.o

perimeter.o: perimeter.c perimeter.h
    gcc -c perimeter.c

clean:
    find ./ -executable -delete

test: tests

tests: test.o
    gcc -o tests test.o

test.o: ./tests/test.c
    gcc -c ./tests/test.c -I..

但是找不到头文件

然后我尝试了...

test.o: ./tests/test.c perimeter.h
    gcc -c ./tests/test.c -I..

test.o: ./tests/test.c perimeter.h
    gcc -c ./tests/test.c -I ../

test.o: ./tests/test.c perimeter.h
    gcc -c ./tests/test.c

全部失败

所以我认为

-I..
不起作用。(我也尝试过
-I ../

如何解决这个问题?

c github gcc makefile gnu
1个回答
0
投票

脚本期望 CWD 是包含

Makefile
的目录(因为它使用
./tests/test.c
),因此
perimiter.h
在 CWD 中,所以

gcc -c ./tests/test.c -I..

应该是

gcc -c ./tests/test.c -I.
© www.soinside.com 2019 - 2024. All rights reserved.