これは以前に尋ねられたことがあることは知っていますが、ご容赦ください。run_testは、作成したいファイルの名前です。'makerun_test'として呼び出す方が好きです。make run_testを呼び出すたびに、prereqのmakefileが呼び出されるようにします。ただし、prereqのmakeを呼び出して、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は、make -C prereq(prereq_dir / makefile)がprereqの依存関係が古く、prereqを再構築する必要があることを検出した場合に更新されます。
これに伴う問題は、rebuilt_test.shが常に呼び出されることです。これは、run_testの依存関係の1つが実行されているためだと思います(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を実行し、次にprereq_dir / prereq_tsが更新された場合にrebuild_test.shを実行します(これは、必要に応じてbuild_prereqのmake呼び出しで発生します)。
これを行うためのより適切な方法はありますか?makeを直接呼び出すことができないため、追加のターゲットを作成したくありません。つまり、「makerun_test」です。