gpt4 book ai didi

boost - 在配置脚本/Autotools 中设置配置选项,并将 Boost 安装在不寻常的位置(EPEL 替代 boost 安装)

转载 作者:行者123 更新时间:2023-12-04 19:36:24 25 4
gpt4 key购买 nike

我目前正在研究在 RHEL7 上运行的基于 Autotools 的构建系统。 Boost 的系统版本相当旧(1.53),但是通过 EPEL(1.69)提供了一个较新的版本。一些最近添加到 Boost 中的库需要这个较新的版本,例如 Boost::Log。

不幸的是,由于它安装在一个稍微不寻常的位置(/usr/include/boost169 和/usr/lib64/boost169),它不能与标准 Autotools Boost 引导脚本 boost.m4 或 ax_boost_*.m4 透明地工作.通过设置 --with-boost=[include dir] 可以使其与 ax_boost_*.m4 一起使用和 --with-boost-libdir=[lib dir] ;但是,这是一个大型组的构建系统,我不希望每个人每次都必须手动设置它,因为它在我们所有的构建中总是相同的。

所以我正在寻找两件事。首先,有没有一种好方法可以选择在 configure.ac 中设置配置选项?检查目录是否存在非常容易,如果用户尚未设置它们,我可以在调用 AX_BOOST_BASE 之前设置 --with-boost 和 --with-boost-libdir 。这将让我制作自己的 boost M4 文件,检查是否将更新版本的 Boost 安装到 EPEL 位置,如果是,设置这些选项并使用它。

其次......这甚至是正确的方法,还是有更清洁的方法来设置整个过程?

最佳答案

First, Is there a good way to optionally set the configure options inside configure.ac?



我带你去问你是否可以修改你的 configure.ac人为地注入(inject)将被识别和处理的程序参数,就好像它们已在命令行上指定一样。据我所知,不,如果不破解 Autoconf 本身,就没有办法做到这一点。

It's pretty easy to check if the directories are there, and I could set --with-boost and --with-boost-libdir before calling AX_BOOST_BASE if the user hasn't already set them. This would let me make my own boost M4 file that checks if a newer version of Boost is installed to an EPEL location and if so, set those options and use it.



修改 AX_BOOST_BASE 是可行的更改 --with-boost* 时的行为未指定选项,但似乎您的想法可能太小了。如果您正在配置的软件包需要某个最低版本的 Boost,那么您应该将其表达为 AX_BOOST_BASE通过它的第一个(可选)参数。这本身可能不足以满足您的需求,但 AX_BOOST_BASE 就足够了应该拒绝太旧的版本。在这种情况下,它看起来像是退回到检查其他位置,并且您可以在其中教它检查您需要处理的表单的位置。

所以
  • 确保您的 configure.ac 指定了适当的最低 Boost 版本
  • 包括更智能的 AX_BOOST_BASE知道如何检查您要使用的库位置

  • Second... is this even the right way to go about this, or is there a cleaner way to set up the entire process?



    我建议的变体对我来说似乎是合理的并且非常干净,但它需要一些工作才能实现。多少取决于您对 shell 和 Autoconf 编程的熟悉程度。您可能会考虑将生成的修改后的宏贡献回 Autoconf 存档(并从那里从最新版本开始),因为这将减少必须再次执行此操作的可能性。

    另一种更简单的选择是提供一个运行 configure 的包装脚本。带有想要的选项,并指示团队使用它而不是运行 configure直接地。在这种情况下,确保将可接受的最低 Boost 版本传递给 AX_BOOST_BASE 仍然有用且合适。 .

    关于boost - 在配置脚本/Autotools 中设置配置选项,并将 Boost 安装在不寻常的位置(EPEL 替代 boost 安装),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57598072/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com