在配置脚本/自动工具中设置配置选项,Boost安装在异常位置(EPEL替代Boost安装)

在配置脚本/自动工具中设置配置选项,Boost安装在异常位置(EPEL替代Boost安装),boost,centos,autotools,autoconf,epel,Boost,Centos,Autotools,Autoconf,Epel,我目前正在RHEL7上运行一个基于Autotools的构建系统。Boost的系统版本非常旧(1.53),但是通过EPEL(1.69)提供了一个更新的版本。对于最近添加到Boost中的一些库,例如Boost::Log,需要这个更新的版本 不幸的是,由于它安装在一个稍微不寻常的位置(/usr/include/boost169和/usr/lib64/boost169),它不能透明地与标准Autotools Boost引导脚本Boost.m4或ax_Boost*.m4一起工作。通过设置——使用boost

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

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

所以我要找两件事。首先,在configure.ac中是否有一种可以选择设置配置选项的好方法?检查目录是否存在非常容易,如果用户尚未设置它们,我可以在调用AX_boost_BASE之前使用boost和boost libdir进行设置。这将使我能够创建自己的boost M4文件,用于检查是否在EPEL位置安装了更新版本的boost,如果是,请设置这些选项并使用它

第二。。。这是一种正确的方法,还是有一种更干净的方法来建立整个流程

首先,在configure.ac中是否有一种可以选择设置配置选项的好方法

我想问您是否可以修改
configure.ac
,以人工插入程序参数,这些参数将被识别和处理,就像它们在命令行上被指定一样。就我所知,不,没有黑客攻击Autoconf本身是无法做到这一点的

检查目录是否存在非常容易,如果用户尚未设置它们,我可以在调用AX_boost_BASE之前使用boost和boost libdir进行设置。这将使我能够创建自己的boost M4文件,用于检查是否在EPEL位置安装了更新版本的boost,如果是,请设置这些选项并使用它

当未指定
--with BOOST*
选项时,可以修改
AX\u BOOST\u BASE
来改变行为,但您可能考虑得太小了。如果您正在配置需要特定最低版本Boost的软件包,那么您应该通过其第一个(可选)参数将其表示为
AX\u Boost\u BASE
。这本身可能还不足以满足您的需要,但是
AX\u BOOST\u BASE
应该拒绝太旧的版本就足够了。在这种情况下,它看起来会返回到检查其他位置,您可以在这里教它检查需要处理的表单的位置

所以

  • 确保configure.ac指定了适当的最低Boost版本
  • 包括一个更智能的
    AX\u BOOST\u BASE
    ,它知道如何检查要使用的库位置
  • 第二。。。这是一种正确的方法,还是有一种更干净的方法来建立整个流程

    我所建议的变化对我来说似乎是合理的,而且相当干净,但是它需要一些工作来实现。多少取决于您对shell和Autoconf编程的熟悉程度。您可能会考虑将所得的修改后的宏返回到AutoCONF存档(并从那里的最新版本开始),因为这将减少再次执行此操作的可能性。 另一个更简单的替代方法是提供一个使用所需选项运行
    configure
    的包装器脚本,并指示团队使用该脚本,而不是直接运行
    configure
    。在这种情况下,确保最低可接受的Boost版本被传递到
    AX\u Boost\u BASE

    仍然是有用且合适的,这听起来像是一个例子。我从未使用过,但您的用例听起来非常像
    config.site
    的发明目的。