2

過去に 2 回、GNU make が私の作業を台無しにしてしまいました。これは、その組み込みルールの一部が.cターゲットとしてファイルを持っているためです。

というファイルとfoo.cfoo.lLex スキャナーまたはfoo.yYacc パーサーがある場合は、注意してください。GNU make は、ファイルがこれらから作成されたターゲットであると想定し.c(これは明らかに POSIX 要件です!)、mv y.tab.c foo.corのようなことを行いますlex -t foo.l > foo.c

有用なルールを維持しながら、そのような隠された危険なルール (既知または未知にかかわらず) をすべて無効にする方法は何ですか?

具体的には、GNU Make にこの要求をどのように与えることができますか?

4

1 に答える 1

3

マニュアルから:

定義済みの暗黙のルールの多くはサフィックス ルールとして make に実装されているため、どのルールが定義されるかはサフィックス リストによって異なります。指定したリストにあるサフィックスの。サフィックスがリストにないルールは無効になります... デフォルトの既知のサフィックスを単に追加するのではなく削除したい場合は、前提条件なしで .SUFFIXES のルールを記述します。これにより、.SUFFIXES の既存の前提条件がすべて排除されます。その後、必要なサフィックスを追加する別のルールを作成できます。

.SUFFIXES:            # Delete the default suffixes
.SUFFIXES: .c .o      # Define a new suffix list
于 2013-10-06T02:32:11.383 に答える