如何解决如何在 autotools 项目中传播配置选项?
我有一个 autotools 项目。 我可以为我的顶部 configure.ac 定义一个自定义选项(“--enable-XX”选项,使用 AC_ARG_ENABLE 和 AM_CONDTIONNAL)。没关系。
但是现在,我想将此选项传播到我的所有子目录。
我该怎么办? :
我是否必须在每个子目录 configure.ac 中定义 AC_ARG_ENABLE/AM_CONDTIONAL?
//// 编辑 ////
这是我的工作目录的架构:
Project
| configure.ac
| Makefile.am
| Component_1
| configure.ac
| Makefile.am (*)
| src
| Makefile.am
| Component_2
| configure.ac
| Makefile.am (*)
| src
| Makefile.am
(*) SUBDirs = src
解决方法
使用子目录不需要创建子项目。
在典型的 Autotools 项目中,只有顶级目录具有 configure.ac
或 configure
脚本。如果要在子目录中配置 makefile 或其他工件,那么这一切都由一个顶级脚本处理。有了这样的安排,你的问题就没有实际意义了——没有任何地方可以将选项传播到,也没有理由想要传播它们。
另一方面,有时一个项目会包含一个单独的完整项目。如果合并的项目是 Autotools 项目,那么它将有自己的 configure
脚本,在运行顶级项目时应该运行该脚本。这是通过使用顶级项目的 configure.ac
中的 AC_CONFIG_SUBDIRS
宏来安排的。每个指定子目录中的 configure
脚本将使用与运行顶级 configure
相同的命令行参数运行;您无需执行任何其他操作即可转发选项。
但是,将任何特定选项转发到子项目 configure
脚本是否有意义,这是一个单独的问题。自定义 configure
选项的含义(如果有)特定于每个 configure
脚本。如果您有一个子项目想要以特定方式对特定自定义选项做出反应,那么它需要自己的 AC_ARG_ENABLE
/ AC_ARG_WITH
以及其他任何需要与之配合的东西。但是如果你觉得可以随意修改一个子项目来添加这样的东西,那么也许它根本不应该是一个子项目,而是完全集成,这样它就可以由顶级脚本直接配置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。