나는이 작업을 수행하기 위해 configure.ac
파일을 작성하는 것을 시도하고 다음 configure
스크립트가 --with-libuv
매개 변수를 받아 들여야PKG_CHECK_MODULES 결과에 따라 AM_CONDITIONAL 및 AC_DEFINE을 정의하는 방법은 무엇입니까?
.
가변
은 (아무것도 커맨드 라인에 통과하지 않은 경우with_libuv
check
기본값 인 상태)yes
,no
또는check
로 설정되어야한다.
이 완료되어야하며with_libuv == "yes"
필수 PKG_CHECK_MODULES가libuv >= 1.9.0
확인HAVE_LIBUV = 1
이 성공을 설정해야합니다 (오류configure
가 중단해야 ON).with_libuv == "no"
아무것도 확인되지 않아야, (3에서와 같은 라이브러리) 옵션 PKG_CHECK_MODULES 검사가 수행해야
with_libuv == "false"
및HAVE_LIBUV
그에 따라0
또는1
로 설정해야- .
with_libuv != "no" && HAVE_LIBUV == 1
AC_DEFINE이-DUSE_LIBUV
을 설정해야하고 AM_CONDITIONAL는 automake에 대한 조건부로USE_LIBUV
을 설정해야합니다.with_libuv != "no" && HAVE_LIBUV == 1
이 아닌 경우 전 처리기 지시문을 설정하지 말고 AM_CONDITIONAL을0
으로 설정해야합니다.
내가 어떻게 알아 낸 1-5 단계,하지만 내 현재 시도되고 나는 6, 7 다음
와 struggeling 오전 :
AC_INIT(
[mumble-pluginbot-plusplus],
[0.5],
[https://github.com/promi/mumble-pluginbot-plusplus/issues],
[],
[https://github.com/promi/mumble-pluginbot-plusplus])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([foreign])
AM_SILENT_RULES([yes])
AC_PROG_CXX
LT_INIT
# Make sure that pkg-config is installed!
# The PKG_CHECK_MODULES macro prints a horrible error message when
# pkg-config is not installed at autogen time.
#
# It is also required when the first PKG_CHECK_MODULES is inside a conditional
PKG_PROG_PKG_CONFIG
PKG_CHECK_MODULES(OPUS, [opus >= 1.1])
PKG_CHECK_MODULES(OPENSSL, [openssl])
PKG_CHECK_MODULES(PROTOBUF, [protobuf])
PKG_CHECK_MODULES(MPDCLIENT, [libmpdclient])
AC_ARG_WITH(
[libuv],
[AS_HELP_STRING([--with-libuv], [support efficient MPD status polling @<:@[email protected]:>@])],
[],
[with_libuv=check])
# if --with-libuv -> it must be installed
# elseif --without-libuv -> do nothing
# else -> check whether it is installed
AS_CASE(
["$with_libuv"],
[yes], [PKG_CHECK_MODULES(UV, [libuv >= 1.9.0], [HAVE_LIBUV=1])],
[no], [],
[PKG_CHECK_MODULES(UV, [libuv >= 1.9.0], [HAVE_LIBUV=1], [HAVE_LIBUV=0])])
if test "$with_libuv" != no -a "x$HAVE_LIBUV" -eq x1; then
AM_CONDITIONAL([USE_LIBUV], [1])
AC_DEFINE([USE_LIBUV], [1], [Define when libuv should be used.])
else
AM_CONDITIONAL([USE_LIBUV], [0])
fi
#AC_CONFIG_HEADERS([src/config.h])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
이 문제가있는 부분이있다 :
0 : 여기if test "$with_libuv" != no -a "x$HAVE_LIBUV" -eq x1; then
AM_CONDITIONAL([USE_LIBUV], [1])
AC_DEFINE([USE_LIBUV], [1], [Define when libuv should be used.])
else
AM_CONDITIONAL([USE_LIBUV], [0])
fi
는 출력 구성에서 발췌 한 것이다
checking pkg-config is at least version 0.9.0... yes
checking for OPUS... yes
checking for OPENSSL... yes
checking for PROTOBUF... yes
checking for MPDCLIENT... yes
checking for UV... yes
./configure: line 16467: test: x1: integer expression expected
./configure: line 16480: 0: command not found
checking that generated files are newer than configure... done
어떻게 실제로 작동하는 방식으로 6 단계와 7 단계를 구현할 수 있습니까?
PKG_CHECK_MODULES가 실패 할 때의 기본 동작은 이미 스크립트를 중단하지만 그 방법은 분명합니다. – Promi