Makefile目标依赖于环境变量中的文件
如果我像这样运行Makefile目标依赖于环境变量中的文件,makefile,dependencies,environment-variables,target,Makefile,Dependencies,Environment Variables,Target,如果我像这样运行make: make VAR=dir 有没有办法将VAR变量所指向的位置添加为目标依赖项?实际上,我需要在该目录中定义一个文件作为依赖项 我同意: target: $(VAR)/file.txt echo yes 但是如果没有定义变量,目标将理解/file.txt,这不是我想要的。我还考虑创建一个虚假目标来检查变量,使用test,但是每次都会执行虚假目标,因此,target也会执行 有什么解决方案吗?如果没有定义变量,您还没有说想要什么行为,但这可能就是您想要的: ifd
make
:
make VAR=dir
有没有办法将VAR变量所指向的位置添加为目标依赖项?实际上,我需要在该目录中定义一个文件作为依赖项
我同意:
target: $(VAR)/file.txt
echo yes
但是如果没有定义变量,目标将理解/file.txt
,这不是我想要的。我还考虑创建一个虚假目标来检查变量,使用test
,但是每次都会执行虚假目标,因此,target
也会执行
有什么解决方案吗?如果没有定义变量,您还没有说想要什么行为,但这可能就是您想要的:
ifdef VAR
target: $(VAR)/file.txt
endif
target:
echo yes
@echo and here are the dependencies: $^
谢谢,这正是我需要的。实际上,我会用
else
子句来括起最后一个目标,这样make就不会抱怨重新定义了目标。make不会抱怨,如果你把第二部分放在else
子句中,这个技巧也不会起作用。试试看。