2013-09-12 2 views
1

Использование сделать на моей машине Gentoo (что GNU сделать 3.82) со следующими Makefile, интересно, почему целевая data/spectra/o4_greenblatt_296K.dat обновляется каждый раз, когда я выполнить make 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 

Любая помощь вы, ребята, можете дать сделать новичку очень ценится :)

+0

Как насчет 'code /' файлов? –

+0

тоже те не меняются. –

+2

Запустить 'make -d'. Он быстро (хотя и подробно) расскажет вам, почему он решает перестроить каждую цель. Я настоятельно призываю вас использовать автоматические переменные, в частности '$ @', но также '$ <', в ваших рецептах, чтобы уменьшить риск опечаток. – MadScientist

ответ

1

Я бы гу что это потому, что нет файла с именем input_spectra_o4_raw, что является обязательным условием для вашего data/spectra/o4_greenblatt_296K.dat.

Решение выглядит вроде как это:

1. params/base/wavelength_grid.dat and params/base/fwhm.dat are both up to date 
2. check input_spectra_o4_raw - file does not exist, so build it first 
3. there is a target for input_spectra_o4_raw, and it's prerequisite 
    data/raw/o4green_gpp.dat is up to date, so run all the commands to build 
    input_spectra_o4_raw (there are none, though, so we essentially just mark that we've 
    done everything we need to for input_spectra_o4_raw and that we built it new) 
4. we just built input_spectra_o4_raw, so data/spectra/o4_greenblatt_296K.dat is out of 
    date with respect to that prerequisite and needs to be rebuilt 

Вы должны исследовать, как использовать .PHONY: псевдо-мишень.

Смежные вопросы