Managing R projects with Makefiles
The define ... endef block is a multi-line variable.
Its just some code we’de like to copy-paste into out recipies
define run_script
@echo "\nRunning $<"
Rscript --vanilla "$<"
@echo "Finished running $<"
endef
# Define a multiline varaible to call Rscript
define run_script
@echo "\nRunning $<"
Rscript --vanilla "$<"
@echo "Finished running $<"
endef
all: \
make_dirs \
./data-simtracks-01_tracks.rds \
./data-simtracks-02_toa.rds \
./data-simtracks-03_ektoa_fits.rds \
./data-simtracks-04_error.rds \
./figures/fig_simtracks_05_diff_resid.png \
./figures/fig_simtracks_05_exmp_resid.png \
./figures/fig_simtracks_05_exmp_diff_resid.png \
./figures/fig_simtracks_05_KS-stat.png \
./figures/fig_simtracks_05_pos_err.png \
./figures/fig_simtracks_05_paired_resid_sim.png \
./figures/fig_simtracks_06_sim_methods.png \
./data-casestudy-01_fit_ekal.rds \
./data-casestudy-02_fit_tdoa.rds \
./data-casestudy-03_conf_int.rds \
./figures/fig_casestudy_04_01.png \
./figures/fig_casestudy_04_02.png \
./figures/fig_misc_01_vel.png \
./figures/fig_map.png
@echo "\nFinished building analysis"
make_dirs:
mkdir -p proofing
mkdir -p figures
data-simtracks-01_tracks.rds: \
script-simtracks-01_generate.R \
script-simtracks-01_generate_fcns.R
$(run_script)
data-simtracks-02_toa.rds: \
script-simtracks-02_toa.R \
./data-simtracks-01_tracks.rds
$(run_script)
data-simtracks-03_ektoa_fits.rds: \
script-simtracks-03_ektoa_positioning.R \
./data-simtracks-02_toa.rds \
./data-simtracks-01_tracks.rds
$(run_script)
data-simtracks-04_error.rds: \
script-simtracks-04_analysis.R \
./data-simtracks-03_ektoa_fits.rds \
./data-simtracks-01_tracks.rds
$(run_script)
./figures/fig_simtracks_05_diff_resid.png \
./figures/fig_simtracks_05_exmp_diff_resid.png \
./figures/fig_simtracks_05_exmp_resid.png \
./figures/fig_simtracks_05_KS-stat.png \
./figures/fig_simtracks_05_pos_err.png \
./figures/fig_simtracks_05_paired_resid_sim.png: \
script-simtracks-05_reporting.R \
./data-simtracks-04_error.rds \
./data-simtracks-01_tracks.rds \
./data-simtracks-03_ektoa_fits.rds
$(run_script)
./figures/fig_simtracks_06_sim_methods.png: \
script-simtracks-06_methods_fig.R \
./data-simtracks-04_error.rds \
./data-simtracks-01_tracks.rds \
./data-simtracks-03_ektoa_fits.rds
$(run_script)
data-casestudy-01_fit_ekal.rds: script-casestudy-01_fitKalman.R
$(run_script)
data-casestudy-02_fit_tdoa.rds: \
script-casestudy-02_fitTDOA.R \
data-casestudy-01_fit_ekal.rds
$(run_script)
data-casestudy-03_conf_int.rds ./data-casestudy-03_pos_sens.rds: \
script-casestudy-03_conf_ellp.R \
./data-casestudy-01_fit_ekal.rds
$(run_script)
./figures/fig_casestudy_04_01.png ./figures/fig_casestudy_04_02.png: \
script-casestudy-04_plots.R \
./data-casestudy-01_fit_ekal.rds \
./data-casestudy-02_fit_tdoa.rds \
./data-casestudy-03_conf_int.rds
$(run_script)
./figures/fig_misc_01_vel.png: script_misc_01_step_len_distributions.R
$(run_script)
./figures/fig_map.png: script_map.R
$(run_script)
.PHONY: clean figures make_dirs
figures: make_dirs
Rscript --vanilla "script_misc_01_step_len_distributions.R"
Rscript --vanilla "script-simtracks-05_reporting.R"
Rscript --vanilla "script-simtracks-06_methods_fig.R"
Rscript --vanilla "script-casestudy-04_plots.R"
clean:
# Delete all figures and temporary files
rm ./figures/*
rm ./proofing/*
rm ./*.rds