0

Arduino プログラムをコンパイルするためのメイクファイルがあります。

いくつかのロジックに基づいて、いくつかのファイルの先頭にテキストを追加する必要があります。そのためにechoコマンドを使用しています。

ECHO    = echo

ファイルの後半には、次のような場所がたくさんあります

$(OBJDIR)/%.cpp: %.pde
    $(ECHO) '#if ARDUINO >= 100\n    #include "Arduino.h"\n#else\n    #include "WProgram.h"\n#endif' > $@

これは正常に動作します。

最近、一部のユーザーから、一部の Linux ディストリビューションで echo コマンドが正しく機能しないという苦情が寄せられたため、echo コマンドに「-e」オプションを追加する必要がありました。

そのため、コマンドを宣言する最初の行を次のように変更しました

ECHO    = echo -e

makefile は -e をオプションの一部ではなくテキストの一部と見なすため、これは機能しません。

編集

エラーは発生していませんが、作成中のファイルにはテキスト -e も追加されています。

-e をテキストの一部ではなくオプションとして宣言する方法はありますか?

4

2 に答える 2

2

echo一部のシェルの一部のバージョンではシェル組み込みコマンドであるため、動作の違いが見られる可能性が最も高いです。make はシェルを使用してコマンドを呼び出すことがたまにしかないため、可能であればコマンドを直接呼び出すことを好むため、これはさらに複雑になります。echoそのため、一部のシステムでは、自分が思っているコマンドを呼び出していないことがあります。

あなたはおそらく設定することでより良い運を得るでしょう

ECHO = /bin/echo -e

echoシェルに組み込みバージョンがある場合でも、外部コマンドを明示的に呼び出します。そうすれば、一貫した結果が得られるはずです。

于 2012-06-23T06:50:13.063 に答える
1

エラーが発生した場合は/bin/sh: 1: -e: not found、makefile.else ではなく、シェルに関連しています。エラーを入力してください。もちろん、エラーが発生した場合。

于 2012-06-23T06:02:29.160 に答える