如何将额外的自定义 ./configure autotools 选项传递给 Buildroot 包?
Posted
技术标签:
【中文标题】如何将额外的自定义 ./configure autotools 选项传递给 Buildroot 包?【英文标题】:How to pass extra custom ./configure autotools options to a Buildroot package? 【发布时间】:2017-11-04 14:07:47 【问题描述】:例如,我想将选项 --enable-foo --enable-bar
添加到 ./configure
命令。
许多./configure
选项可以通过BR2_
配置间接设置,但是许多软件的选项太多,以至于不可能为每个可能的./configure
选项设置一个BR2_
配置。
是否有适用于所有 autotools 包的通用机制?
【问题讨论】:
【参考方案1】:我认为截至 2017.02 目前还没有通用方法,因为package/pkg-autotools.mk
包含:
# Configure package for target
define $(2)_CONFIGURE_CMDS
(cd $$($$(PKG)_SRCDIR) && rm -rf config.cache && \
$$(TARGET_CONFIGURE_OPTS) \
$$(TARGET_CONFIGURE_ARGS) \
$$($$(PKG)_CONF_ENV) \
CONFIG_SITE=/dev/null \
./configure \
--target=$$(GNU_TARGET_NAME) \
--host=$$(GNU_TARGET_NAME) \
--build=$$(GNU_HOST_NAME) \
--prefix=/usr \
--exec-prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--program-prefix="" \
--disable-gtk-doc \
--disable-gtk-doc-html \
--disable-doc \
--disable-docs \
--disable-documentation \
--with-xmlto=no \
--with-fop=no \
--disable-dependency-tracking \
--enable-ipv6 \
$$(DISABLE_NLS) \
$$(SHARED_STATIC_LIBS_OPTS) \
$$(QUIET) $$($$(PKG)_CONF_OPTS) \
)
endef
else
我看不到任何插入任意选项的方法,因为$$($$(PKG)_CONF_OPTS)
是从每个包的package.mk
设置的,并且其他变量似乎也有特定用途,不应该被弄乱。
但我认为如果我们添加一个:
$$($$(PKG)_CONF_OPTS_EXTRA)
然后您可以从 CLI 执行以下操作:
make MYPACKAGE_CONF_OPTS_EXTRA="--enable-foo --enable-bar"
最后,对于某些软件包,您可以摆脱现有的 make
配置,例如对于尚未转换为自动工具的host-qemu
,我设法通过以下方式获得额外的选项:
HOST_QEMU_OPTS="--enable-sdl --with-sdlabi=2.0"
因为幸运的是,该包恰好在 Makefile 上使用 +=
而不是 =
。
Thomas 在https://***.com/a/49570825/895245 的回答还表明,如果不破解新的配置选项,这是不可能的。
【讨论】:
【参考方案2】:您可以定义 BR2_EXTERNAL
树,并在 external.mk
中覆盖您喜欢的任何包变量(当然,也有一些例外,例如 <PKG>_VERSION
)。您可以附加到变量或覆盖它们。
【讨论】:
您好,请问有没有适用于配置的变量?以上是关于如何将额外的自定义 ./configure autotools 选项传递给 Buildroot 包?的主要内容,如果未能解决你的问题,请参考以下文章
ValueError: Invalid configuration: - Deprecated option 'domaincontroller': use 'http_aut