私は、これらのタスクを実行するconfigure.ac
ファイルを記述しようとしています:PKG_CHECK_MODULESの結果に基づいてAM_CONDITIONALとAC_DEFINEを定義する方法は?
configure
スクリプトが--with-libuv
パラメータを受け入れる必要があります。変数
with_libuv
は(check
が何もコマンドラインに渡されていないデフォルト値である)yes
、no
またはcheck
のいずれかに設定する必要があります。 (エラーconfigure
で中止すべきである)必須PKG_CHECK_MODULESがlibuv >= 1.9.0
をチェックwith_libuv == "yes"
が行われるべきであるとHAVE_LIBUV = 1
が成功した場合に設定する必要があります。
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
は、configureの出力からの抜粋です。
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