Я знаю, что это было задано раньше, но, пожалуйста, несите меня. run_test - это имя файла, который я хотел бы сделать. Я предпочитаю использовать команду make run_test. Я хочу, чтобы makefile prereq вызывался каждый раз, когда вызываю make run_test. Но я не хочу, чтобы вызов make proreq заставлял run_test перестраиваться.сделать силу мишень перед превью
run_test: build_prereq prereq_dir/prereq_ts
rebuild_test.sh
.PHONY: build_prereq
build_prereq:
make -C prereq_dir
prereq_dir/prereq_ts обновляется, если сделать -C PREREQ (prereq_dir/Makefile) определяет зависимости, PREREQ являются старыми и PREREQ должен быть восстановлен.
Проблема в том, что rebuilt_test.sh всегда вызывается, и я предполагаю, что это потому, что выполняется одна из зависимостей run_test (так как это PHONY).
Я решил эту проблему путем изменения run_test к:
run_test:: build_prereq
run_test:: prereq_dir/prereq_ts
rebuild_test.sh
.PHONY: build_prereq
build_prereq:
make -C prereq_dir
Является ли это хорошее решение? Сначала выполняется build_prereq, а затем выполняется rebuild_test.sh, если обновляется prereq_dir/prereq_ts (что произойдет в случае вызова make_prereq при необходимости).
Есть ли более правильный способ сделать это. Я не хочу создавать дополнительные цели, поскольку это не позволяет прямое обращение make, т. Е. «Make run_test».
Это немного неясно. Предположим, что 'prereq_dir/prereq_ts' не изменилось, но предпосылки' prereq' имеют; должен ли 'make run_test' делать что-нибудь? – Beta
Нет, run_test не следует перестраивать. Если предпосылки preereq изменяются, то prereq_dir/prereq_ts будут затронуты, и это должно привести к тому, что run_test будет перестроен. – nachum