私のFedora15ボックスでは、次のようなMakefileを書くことができます。
app = MyApplication
deps = `pkg-config ...`
これは完全に正常に機能します。しかし、DebianマシンでそのようなMakefileを実行しようとすると、「=」の周りの空白が原因でエラーが発生したようです。したがって、次のように書き直します。
app=MyApplication
deps=`pkg-config ...`
それを修正します。今私の質問は、この非互換性はどのように引き起こされるのですか?私のFedora製はバージョン3.82ですが、Debian製は3.81です。makeの変更ログを検索しても、これを可能にする変更は見つかりませんでした。
編集:
私はこの奇妙な振る舞いの原因を見つけたようです。ほとんどのmakefileでは、通常、変数「include」を使用してすべてのpkg-config出力を保持しています。どうやら「include」はある種のキーワードであり、Debianでこのように使用されていない場合は
include="stuff"
マクロをトリガーして、パスなどを探します。上記のように使用すれば、正規変数として使用できます。しかし、ここで興味深い部分は次のとおりです。Fedoraでは常に変数名として「include」を使用できます。したがって、次のような行:
include = `pkg-config --blah`
Fedoraでは完全に機能しましたが、Debianでは常に「Makefile:2:=:そのようなファイルやディレクトリはありません」という行を吐き出していました(「=」やその他すべてがパスであるように見えました)
今でも私の質問は残っていますが、なぜFedoraでそのようなことができるのですか(なぜ'includeマクロがそこで定義されていないようです)がDebianではできないのですか?