Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 自动生成AC_配置_文件输入_Unix_Build Automation_Autotools_Autoconf - Fatal编程技术网

Unix 自动生成AC_配置_文件输入

Unix 自动生成AC_配置_文件输入,unix,build-automation,autotools,autoconf,Unix,Build Automation,Autotools,Autoconf,创建configure.ac文件时,标准做法似乎是显式地硬编码一个Makefile列表,该列表应根据相应的Makefile.in创建。然而,这似乎不是必需的,列表可以很容易地从某种类型的glob规范(例如.*/Makefile.in)或shell命令(例如find-name Makefile.in)生成 不幸的是,这个功能似乎并没有内置到autoconf中!我是m4新手,但我没有遇到任何关于运行shell命令来生成m4输入值的问题。显然,可以通过将文件和shell命令组合在一起生成configu

创建configure.ac文件时,标准做法似乎是显式地硬编码一个Makefile列表,该列表应根据相应的Makefile.in创建。然而,这似乎不是必需的,列表可以很容易地从某种类型的glob规范(例如.*/Makefile.in)或shell命令(例如find-name Makefile.in)生成

不幸的是,这个功能似乎并没有内置到autoconf中!我是m4新手,但我没有遇到任何关于运行shell命令来生成m4输入值的问题。显然,可以通过将文件和shell命令组合在一起生成configure.ac文件来攻击它,但这似乎不必要地复杂


有没有一个标准的方法可以做到这一点?如果没有,为什么不呢?有什么问题吗?

尽管有评论,我还是这样做了。我在问题中没有提到的是,这个自动生成已经完成了,但是以一种非常特别的方式将各种文件(其中一些是动态生成的)连接在一起,以创建configure.ac,我只是想清理一下

在构建脚本中,我们有:

confdir=config/configure.ac_脚本 生成项目中所有makefile的排序列表,将其包装到 自动配置命令,并将其放入文件中。 makefile_list=$find-type f-name'makefile.am'\ |sed-e's:Makefile\.am:Makefile:'-e's:^./:'\ |分类 对上述命令的详细解释如下: 首先,我们在项目中找到所有Makefile.ams。 然后我们删除.am使用sed获取要创建的makefile列表。我们 同时删除此处的./here,因为自动工具不喜欢它。 最后,我们对输出进行排序,以便得到的列表的顺序是 确定性。 创建包含makefile列表的文件
cat>$confdir/new\u makefile\u列出您不想这样做的原因之一是,如果您添加一个应由AC\u CONFIG\u文件生成的新文件,则在运行make时不会生成该文件。当您显式列出文件时,添加新模板会更改configure.ac,这将强制重新运行autoconf以重新生成configure、configure以重新生成config.status和config.status以重新生成模板输出。您可能可以使用m4_esyscmd破解某些内容,但请不要。您不需要生成configure.ac。如果您坚持,请使用find命令并将结果放入AC_CONFIG_文件的参数列表中,但不要自动执行该过程。这是在项目生命周期中很少发生的事情,也就是说,一次,应该由一个人来监控。对该列表所做的任何更改都应该手动完成,以帮助防止构建膨胀。
# Include the file containing the constructed AC_CONFIG_FILES([....]) command
m4_include([config/configure.ac_scripts/makefile_list])