【发布时间】:2013-09-16 20:33:02
【问题描述】:
在我的Gentoo机器(即GNU make 3.82)上使用make和下面的Makefile,我想知道为什么每次我执行make data/spectra/o4_greenblatt_296K.dat时目标data/spectra/o4_greenblatt_296K.dat都会更新,即使文件params/base/fwhm.dat、params/base/wavelength_grid.dat 和data/raw/o4green_gpp.dat 均未更改,文件data/spectra/o4_greenblatt_296K.dat 已存在:
FWHM = params/base/fwhm.dat
WLGRID = params/base/wavelength_grid.dat
$(WLGRID): code/create_wavelength_grid.py
cp code/create_wavelength_grid.py params/base/wavelength_grid.dat
$(FWHM): code/create_fwhm_param.py
cp code/create_fwhm_param.py params/base/fwhm.dat
data/raw/o4green_gpp.dat:
echo 1 > data/raw//o4green_gpp.dat
input_spectra_o4_raw: data/raw/o4green_gpp.dat
data/spectra/o4_greenblatt_296K.dat: $(WLGRID) $(FWHM) input_spectra_o4_raw
echo 1 > data/spectra/o4_greenblatt_296K.dat
input_spectra_o4: data/spectra/o4_greenblatt_296K.dat
非常感谢你们对make新手的任何帮助:)
【问题讨论】:
-
code/文件呢? -
那些也不会改变。
-
运行
make -d。它会很快(虽然很冗长)告诉你为什么它决定重建每个目标。我强烈建议您在食谱中使用自动变量,特别是$@和$<,以减少拼写错误的风险。 -
@MadScientist 你应该提供这个作为答案 i.o.只是一个评论。我刚刚投了赞成票。