VPATH没有在makefile中wotking

use*_*740 2 linux makefile

我有一个非常小的make文件包含内容

VPATH = src

main: main.o
        gcc -o main main.o

main.o: main.c
        gcc -c main.c
Run Code Online (Sandbox Code Playgroud)

当前目录包含一个包含main.c的目录src

当我执行make时,我得到错误

gcc -c main.c
gcc: main.c: No such file or directory
gcc: no input files
make: *** [main.o] Error 1
Run Code Online (Sandbox Code Playgroud)

当我在当前目录中移动main.c时,它可以工作.似乎VPATH宏不起作用.请告诉我VPATH的用法.

thi*_*ton 6

虽然make定位main.c很好,但你在这里错过了自动变量的使用:

main.o : main.c
        gcc -o $@ -c $<
Run Code Online (Sandbox Code Playgroud)

这将通过gcc拨打电话进行扩展

gcc -o main.o -c src/main.c
Run Code Online (Sandbox Code Playgroud)

始终使用自动变量 $<(第一个先决条件)和$@(目标),它们使得功能更强大,更易于阅读.