2012-02-01 6 views
5

GNU makeとBerkley make(freeBSD)と互換性のあるif/else statemantのタイプはありますか?makeとgmakeがelse statmentの場合には互換性があります

GNUのMAKE:

ifeq ($(BUILD_TYPE), debug) 

バークレーメイク:

include $(BUILD_TYPE).mk 

どこBUILD_TYPE:あなたができる最善の使用は次のように、構築名前のファイルが含まれている

.ifdef (BUILD_TYPE) 
+2

これらの2行は同じことをテストしないことに注意してください。 –

+0

make&gmake構文の唯一の例です。質問は上記のとおりです。 GNU "ifeq"は ".if"バークリーを相当するものです。私はこれを知っている。 – abrahab

+0

なぜ 'automake'を使用せず、あなたのための条件を移植可能にするのはなぜですか? –

答えて

5

号「デバッグ」などとなります。これは確かにif/elseほど強力ではありませんが、携帯可能な方法で限られたものをうまくやり遂げることができます。

一般的に、POSIXが提供する基本よりも洗練された機能を使用する移植可能なメイクファイルを作成することはほとんど不可能です。 makefileの構文は非常に緩やかで自由形式ですが、伝統的なmakeやPOSIX標準で提供されている機能は非常に貧弱で、ほとんどのベンダーが互換性のない拡張を多数作成しています。

一般的に人々はこれについて不思議に思うときは、あなたが携帯用メイクファイルを書くという面倒な作業を行うautomakeを使うか、あるいはmake makeやotherにコミットして、彼らはそれを持っていません。 GNU makeは確かに、多種多様なプラットフォーム、つまりPOSIX以外のプラットフォームでも動作します。

関連する問題