【发布时间】:2015-01-06 11:23:28
【问题描述】:
假设我有一个名为 install 的目标,它从整个代码库构建二进制文件。
在 makefile 中,我有另一个名为 foo.src 的目标,它生成一个带有环境变量的源文件“foo.src”,安装时需要它。
名为 test 的第三个目标将运行一系列测试。
显然测试依赖于安装,安装依赖于 foo.src。
我试图避免每次构建测试时重新生成文件 foo.src,因为 foo.src 是许多目标的先决条件,但如果我直接构建安装,我仍然想确保它能够重新生成。
到目前为止我得到了什么:
BUILD_INSTALL =
install: BUILD_INSTALL = dummy
install: foo.src
@echo "INSTALL!!!"
@echo BUILD_INSTALL=$(BUILD_INSTALL)
touch install
foo.src: $(BUILD_INSTALL)
@echo "foo.src!!"
@echo BUILD_INSTALL=$(BUILD_INSTALL)
touch foo.src
test: install
@echo "TEST!!!"
.PHONY: test dummy
dummy:
据我所知,重复构建安装不会重新生成 foo.src。当我第二次构建安装时,$(BUILD_INSTALL) 不会作为 foo.src 的先决条件扩展为 dummy。
【问题讨论】:
-
那么,当你在命令行中输入
make install时,你想重建foo.src,而不是当install是其他东西的先决条件时?这可能是可能的,但会很丑……我怀疑重新考虑设计会是一种更好的方法……