0
我正在尝试编写一个Makefile,其目标取决于是否存在磁盘文件。磁盘文件本身只需要创建;它不依赖于任何可能更新它的操作。如果我没有给它任何依赖关系,那么每次在其中一个目标上运行make时,都会重新创建该文件。Makefile目标依赖于目标是否已存在
有没有办法让目标取决于它是否存在?
这是我拥有的Makefile的一部分。 $(TMPDEV)
文件只有在不存在时才需要创建,否则应视为最新。
TMPDEV="/tmp/disk.img"
$(TMPDEV):
fallocate -l 806354944 $(TMPDEV) || dd if=/dev/zero of=$(TMPDEV) bs=1b count=1574912
sudo parted --script $(TMPDEV) unit s mklabel msdos \
mkpart primary fat16 2048 526335 \
mkpart primary fat32 526336 1050623 \
mkpart primary NTFS 1050624 1574911 \
quit
$(eval TMPDISK := $(shell sudo partx --verbose -a $(TMPDEV) | tail -1 | cut -d':' -f1))
sudo mkfs.fat -F 16 -n FAT16 $(TMPDISK)p1
sudo mkfs.fat -F 32 -n FAT32 $(TMPDISK)p2
sudo mkfs.ntfs -L NTFS $(TMPDISK)p3
sudo partx -d $(TMPDISK)
sudo losetup -d $(TMPDISK)
testresults: $(TMPDEV)
touch testresults
analytics: $(TMPDEV)
touch analytics