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.

관련 정보