メイクファイル内で次のコマンドを実行しています。file2 を開く必要があるときにエラーが発生します。つまり、選択したスイッチに基づいて file1.c に何らかの変更がある場合、make はまさにこの行で失敗します。
unifdef -DSW1 -DSW2 -USW3 file1.c >file2.c
unifdef は、部分的な前処理を行うユーティリティです。file1.c が unifdef に入力され、file2.c が出力されます。私のメイクファイルは単純明快で、file1.c にも file2.c にも依存していません。Makefile の依存関係は正常に機能しています。
ありがとう、