1

make ターゲットを実行ファイルに依存させたい。たとえば、単純なメイクファイルがあります。

a.out: test.cpp
    gcc test.cpp

私はそのようなものが欲しい:

a.out: test.cpp, `which gcc`
    gcc test.cpp

これは、gcc を変更すると (特に更新すると)、a.out が再構築されることを意味します (test.cpp が変更されていなくても)。

しかし、このルール ツールで使用されるルールごとにもう 1 つの前提条件を追加する必要があるため、不格好なソリューションのように見えます。

この問題の他の解決策はありますか?

4

1 に答える 1

1

In a GNU make makefile, you could use:

CC := $(shell which gcc)

a.out: test.cpp ${CC}
    ${CC} -o $@ test.cpp

Note that the build would only trigger if the compiler executable was modified, not simply because it was different from last time the program was built. Historically, SUN make had a '.make.state' file and a .KEEP_STATE target which kept track of such things. IBM Rational ClearCase has a clearmake that also tracks such issues if you choose to make it do so.

于 2012-10-25T13:07:17.033 に答える