linux - VPATH 在 makefile 中不起作用

标签 linux makefile

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

VPATH = src

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

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

当前目录包含一个包含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

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

最佳答案

同时 make定位main.c很好,您在这里缺少自动变量的使用:

main.o : main.c
        gcc -o $@ -c $<

将由 make 扩展为 gcc打电话

gcc -o main.o -c src/main.c

始终使用 automatic variables $< (第一个先决条件)和 $@ (目标)在可能的情况下,它们使 make 既更强大又更易于阅读。

关于linux - VPATH 在 makefile 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7678776/

相关文章:

c - makefile 缺少分隔符但不是制表符问题

makefile - 当我使用使用 Clang 编译的构建工具包时,QMake 添加了额外的 "-std=gnu++11",它覆盖了我的 .pro 标志添加 "-std=c++17"

c - 在我的 makefile 中设置我的 LD_LIBRARY_PATH 有问题

linux - crontab 用于调度 shell 脚本

linux - 如何将文件名放在我要命令的目录中?

linux - 在汇编程序中从/dev/input/event* 读取键盘事件

linux - 为什么 chmod 命令不能将 DIR 的内容识别为目录?

makefile 独立@符号和目录关键字

linux - shell sh脚本中的目录列表

linux - Visual Studio Code 智能感知和 includePath