覆盖 makefile 珍贵的变量

覆盖 makefile 珍贵的变量

configure.ac 有宝贵的变量[1],在调用configure时应该将其嵌入,例如将系统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.

相关内容