7

条件付きブロックをMakefile.amに挿入して、autotoolsによって作成されたMakfileにさらに渡されるようにする方法があるかどうか、誰か教えてもらえますか?

次に例を示します。

ifeq "$(SOMEVAR)" ""
SOMEVAR="default_value"
endif

これは、条件付きのことを行う通常のMakefileの方法のようです。Automakeはendif行を切断し、makeは最終的に次のようなメッセージで失敗します。

Makefile:390:* `endif'がありません。止まる。

何かご意見は?

4

2 に答える 2

5

Autoconfとしてもタグ付けされているので、可能であれば、configure.acに条件を設定することをお勧めします。同様に:

AM_CONDITIONAL([CONDITION_NAME], [test x"${SOMEVAR}" != x])

次に、Makefile.amには次のものが含まれます

if CONDITION_NAME
<conditional code>
else
<else :)>
endif

アップデート

問題はと関係があります

python setup.py --root=$(DESTDIR) --prefix=$(DESTDIR)$(prefix)

どこかから呼ばれています。空の場合DESTDIR、プレフィックスは相対パスに展開される可能性がありますが、これは必要なものではありません。Makefile.amから呼び出されていることを確認しました。次に、実行できることが2つあります。

  1. 上記のコマンドをに変更しpython setup.py --root=${DESTDIR}/// --prefix=${DESTDIR}///$(prefix)ます。AFAIK、POSIXではダブルスラッシュに特別な意味を持たせることができますが、3つ以上の連続したスラッシュでは使用できないため、トリプルスラッシュが必要になる場合があります。

  2. 上記のコマンドをに変更しますDESTDIR=${DESTDIR:-///} && python setup.py --root=${DESTDIR} --prefix=${DESTDIR}$(prefix)

私の意見と全体像の限られた理解では、それは必要ではないはずだということは注目に値するかもしれません。の元の呼び出し元は、実際に使用したいものをconfigure正確に指定できたためです。prefix何も指定されていない場合、Autoconfはすでにデフォルトで絶対パス(/usr/local)になっています。だから、なぜあなたが問題にぶつかったのかよくわかりません。

于 2010-11-23T13:49:19.443 に答える