Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
Makefile configure.AC中AC_CONFIG_文件的变量目录路径 我正在编写C++中的一个小工具。它实际上更像是一个开放定制的框架。它具有以下目录结构(简化示例)_Makefile_Configure_Autotools - Fatal编程技术网

Makefile configure.AC中AC_CONFIG_文件的变量目录路径 我正在编写C++中的一个小工具。它实际上更像是一个开放定制的框架。它具有以下目录结构(简化示例)

Makefile configure.AC中AC_CONFIG_文件的变量目录路径 我正在编写C++中的一个小工具。它实际上更像是一个开放定制的框架。它具有以下目录结构(简化示例),makefile,configure,autotools,Makefile,Configure,Autotools,这里,目录“coder”是一个通用的伪目录,带有一些生成libapple.so的示例代码。不同的用户可以签出这个工具,创建自己的目录,从“coder”复制模板代码,并根据自己的意愿进行定制。根据配置选项(指示用户),需要生成相应的libapple.so 正如我提到的,这是一个简化的例子。这不是一般编程、继承等问题。事实上,与“apple”文件夹类似,还有其他类似的文件夹,如“脚本”、“文档”、“配置”等,每个文件夹都具有类似的用户特定文件夹。此外,该工具将在单个存储库位置进行维护,以允许我支持和

这里,目录“coder”是一个通用的伪目录,带有一些生成libapple.so的示例代码。不同的用户可以签出这个工具,创建自己的目录,从“coder”复制模板代码,并根据自己的意愿进行定制。根据配置选项(指示用户),需要生成相应的libapple.so

正如我提到的,这是一个简化的例子。这不是一般编程、继承等问题。事实上,与“apple”文件夹类似,还有其他类似的文件夹,如“脚本”、“文档”、“配置”等,每个文件夹都具有类似的用户特定文件夹。此外,该工具将在单个存储库位置进行维护,以允许我支持和维护所有非特定于用户的代码。作为一项策略,用户只需修改和签入其文件夹的内容

我面临的问题是“configure.ac”。我不想使用“AC_ARG_WITH”选项,因为它会要求每个新用户编辑configure.AC。此外,对于每个用户,AC_CONFIG_文件条目除了其文件夹名称外将完全相同。我尝试使用“-enable user=user”,然后使用AC_SUBST(USERDIR),这也有助于在Makefile.am中设置“SUBDIRS=@USERDIR@”。除了在我指定“AC_CONFIG_FILE=([apple/${USERDIR}/Makefile])时没有在用户文件夹下创建“Makefile.in”之外,一切看起来都很好


请建议如何克服这个问题。在最坏的情况下,我可能最终会创建软链接:(

在一整天的挠头之后,我想出了以下解决方案

像这样创建一个文件“project_makefiles.m4.in”

AC_CONFIG_FILES([ apple/USERDIR/Makefile ]
将下面的添加到configure.ac

m4_include([project_makefiles.m4])

创建一个像“build.sh”这样的包装脚本,它将通过替换“USERDIR”从“project\u makefiles.m4.in”创建“project\u makefiles.m4”。这是在自动生成之前完成的。

运行configure时的错误消息是“config.status:错误:找不到输入文件:`apple/john/Makefile.in',我建议使用分布式版本控制系统,而不是此方案。不要与工具对抗。@ptomato,在上一次事件中,分布式版本控制以完全奇怪的分叉结束(团队甚至自行定制主代码)。跟踪和维护变得困难。这是一个供内部使用的非官方工具,适用于30到40个团队,每个团队都有自己的定制需求。我的目的是提供稳定的核心(我维护)和灵活的行动(每个团队)的组合.Dynamic path是目前唯一的阻塞问题。工具不应该限制太多。例如,在makefiles中读取通配符上的参数。自动工具也可以帮助删除我的指针吗?我觉得这样做是因为,我要求的不是那么重要。变量替换在configure.ac的其他区域有效,但在ac\u-COFIG\u文件中无效语法在这方面缺乏一致性。
m4_include([project_makefiles.m4])