我使用GNU Make 3.81来构建给定的C项目。 GNU的正常行为是检查,如果目标存在且任何先决条件比目标更新,则执行目标命令。
如果先决条件比目标更新并且比给定时间戳更新,是否可以重建目标?可以说,它仅在文件比2011年10月2日更新时才构建。
答案 0 :(得分:2)
没有办法直接使用make,但您可以在规则的操作中使用shell来执行此操作:
target: prereq
touch --date='Oct 2, 2011' .timestamp
if [ $< -nt .timestamp ]; then \
command to rebuild target; \
fi
请注意使用\
使if
命令成为单个命令。您还可以使用else
来处理目标已过期且前提条件也已过时的情况。
答案 1 :(得分:0)
make
将重新制作比任何其先决条件更新的所有目标,因此您的和条件将难以实施。
如果要在构建目录中引入一个纪元,只需使用touch -d
将所有文件的修改时间戳设置为纪元时间。不是一个漂亮的,但一个有效的解决方案