1. ホーム
  2. makefile

[解決済み] Make: コマンドが失敗した後、どのように続行するのですか?

2022-04-21 16:28:46

質問

コマンド $ make all は、次のようなエラーを出します。 rm: cannot remove '.lambda': No such file or directory と表示され、停止します。rm-not-found-errorsを無視させたいのですが。強制的に作るにはどうしたらいいでしょうか?

メイクファイル

all:
        make clean
        make .lambda
        make .lambda_t
        make .activity
        make .activity_t_lambda
clean:
        rm .lambda .lambda_t .activity .activity_t_lambda

.lambda:
        awk '{printf "%.4f \n", log(2)/log(2.71828183)/$$1}' t_year > .lambda

.lambda_t:
        paste .lambda t_year > .lambda_t

.activity:
        awk '{printf "%.4f \n", $$1*2.71828183^(-$$1*$$2)}' .lambda_t > .activity

.activity_t_lambda:
        paste .activity t_year .lambda  | sed -e 's@\t@\t\&\t@g' -e 's@$$@\t\\\\@g' | tee > .activity_t_lambda > ../RESULTS/currentActivity.tex

解決方法は?

を試してみてください。 -i フラグ(または --ignore-errors ). ドキュメント は、これを実現するために、より堅牢な方法を提案しているようです。

コマンドラインでのエラーを無視するには - を行頭(最初のタブの後)に追加してください。このとき - は、コマンドが実行されるためにシェルに渡される前に破棄されます。

例えば

clean:
  -rm -f *.o

これにより rm は、たとえファイルを削除できなくても処理を続行します。

すべての例は rm しかし、エラーを無視する必要のある他のコマンドにも適用できます (例. mkdir ).