Makefileの貴重な変数をオーバーライド

Makefileの貴重な変数をオーバーライド

configure.acには、設定を呼び出すときに含める必要がある貴重な変数[1]があります。たとえば、システムLuaインタプリタの位置を貴重な変数[2]で設定します。

configure.ac:
  ...
  dnl Make LUA a precious variable.
  AC_ARG_VAR([LUA], [The Lua interpreter, e.g. /usr/bin/lua5.1])
command line:

./configure LUA=lua-5.3.6/src/lua

OR

export LUA=lua-5.3.6/src/lua
./configure

しかし、ユーザーが環境変数として毎回追加するように要求するのではなく、Luaインタプリタの場所をハードコードしたいと思います。これをどのようにconfigure.acにハードコードできますか?

[1]https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Setting-Output-Variables.html

[2]:AC_ARG_VARは実際にm4マクロにネストされています。http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/ax_lua.m4

答え1

を使用すると仮定すると、AX_PROG_LUAより良いアプローチはaction-not-foundブランチを使用することです。

AX_PROG_LUA[([MINIMUM-VERSION], [TOO-BIG-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])]

そのブランチ内でデフォルトを使用して必要なパスを設定できます(またはより良い方法は、まずこのパスで実際にluaを見つけることができることを確認することです)。

これの利点は、(1)既存のマクロを変更する必要がなく、(2)パッケージが破損しないことです。欲しくないハードコーディングしたいパスにluaを含めます。

これがあなたのユースケースではなく、パッケージに特定のバージョンのLUAが含まれている場合(ユースケースを伝えていないので推測する必要がある)、パスを設定するだけです。それに頼る代わりに直接AX_PROG_LUA

関連情報