理解Make规则:关于依赖文件test.c路径的技术问询
关于Makefile中未指定路径的依赖文件问题
嘿,这个问题问得很实用!咱们来掰扯清楚:
默认情况下,确实需要放在当前目录——当你的Make规则里只写了test.c作为依赖,没加任何路径前缀(比如src/test.c或者../test.c),Make会优先在你运行make命令的当前工作目录里查找这个文件。
不过也有例外情况,这俩配置能改变这个行为:
- 如果你在Makefile里定义了
VPATH变量,比如:
那Make会按照这个变量里列出的目录顺序,依次去这些目录里找VPATH = src:../commontest.c,不一定非得局限在当前目录。 - 还有更灵活的小写
vpath规则,比如针对.c文件指定查找目录:
这种情况下,所有vpath %.c src.c后缀的依赖文件(包括test.c)都会先去src目录找,找不到才会回退到当前目录。
举个实际例子,假设你的Makefile是这样的:
VPATH = src test: test.c gcc -o test test.c
哪怕test.c放在src子目录里,Make也能顺利找到它并完成编译,完全不用把文件移到当前目录。
总结一下:没配置路径查找规则时,test.c得在当前目录;但要是设置了VPATH或者vpath,它就可以待在指定的其他目录里啦。
内容的提问来源于stack exchange,提问作者edmamerto
相关产品推荐
相关产品推荐

