Makefile:如果文件存在并且小于5分钟,则不执行其他操作
在Ubuntu 16.10上,我试图在一个makefile中表达以下语句:Makefile:如果文件存在并且小于5分钟,则不执行其他操作,makefile,Makefile,在Ubuntu 16.10上,我试图在一个makefile中表达以下语句: if file exists and is younger than 5 minutes do X else nothing 目前,我相信我有部分解决方案 compile_service: ifeq ($(wildcard $(FILES)/$(CLASS).java)),"") #If file does not exist then $(wildcard file) will evaluate to an empt
if file exists and is younger than 5 minutes do X else nothing
目前,我相信我有部分解决方案
compile_service:
ifeq ($(wildcard $(FILES)/$(CLASS).java)),"") #If file does not exist then $(wildcard file) will evaluate to an empty string.
else
ifeq ???
CLASSPATH=$(RT) javac $(FILES)/$(CLASS).java
$(CMD) $(FILES)/$(CLASS).class
endif
endif
然而,我在检查年龄方面有问题,也不确定这是否是一个好方法
其目的是,如果Java文件在X时间内没有被修改,我就不会重新编译它
编辑:
我感觉我就快到了。我正在尝试这样的事情:
compile_service:
ifneq (echo $(($(date +%s)/60)), echo $(($(stat -c %Y $(FILES)/$(CLASS).class)/60)))
CLASSPATH=$(RT) javac $(FILES)/$(CLASS).java
$(CMD) $(FILES)/$(CLASS).class
else
$(info Makefile: Recent file exists, using that instead)
endif
但这总是失败(消息被打印出来)。
知道我做错了什么吗?在终端中执行这些命令可以打印出精确到分钟的好时间。我将从不同的方法解决您的问题。我认为测试应该是shell命令的一部分,而不是
make
特定命令的一部分。例如:
compile_service:
find YOURFILE -type f -Btime +5m -maxdepth 0 2>/dev/null && YOUR_DESIRED_COMMAND
我会用不同的方法解决你的问题。我认为测试应该是shell命令的一部分,而不是
make
特定命令的一部分。例如:
compile_service:
find YOURFILE -type f -Btime +5m -maxdepth 0 2>/dev/null && YOUR_DESIRED_COMMAND
您的
ifneq
语句无法工作。。。如果ifneq
,您似乎认为可以在参数中编写shell脚本:您不能ifneq
是一个makefile构造,而不是shell脚本或配方:您只能在那里使用make命令。您的ifneq
语句无法工作。。。如果ifneq
,您似乎认为可以在参数中编写shell脚本:您不能ifneq
是一个makefile构造,而不是shell脚本或配方:您只能在那里使用make命令。