我正在用C++编写一个小工具。它实际上更多是一个可定制的框架。它具有以下目录结构(简化示例)。configure.ac中AC_CONFIG_FILES的可变目录路径
src/
main/myexec # linked to libapple.so
apple/
coder/libapple.so
john/libapple.so
.
.
james/libapple.so
在这里,目录“编码器”是一个通用的哑元,并带有一些示例代码来生成libapple.so。不同的用户可以检出这个工具,创建他们自己的目录,从“编码器”复制模板代码并按照他们的意愿自定义。根据配置选项(表示用户),需要生成相应的libapple.so。
正如我所提到的,这是一个简化的例子。这不是泛型编程,继承等问题。事实上,类似于“apple”文件夹,还有其他类似于“脚本”,“文档”,“配置”等每个具有类似的用户特定文件夹。此外,该工具将被维护在一个存储库位置,以便我支持&保留所有不特定于用户的代码。作为一项政策,用户需要修改和检入其文件夹的内容。
我面临的问题是“configure.ac”。我不想使用“AC_ARG_WITH”选项,因为它需要每个新用户编辑configure.ac。除了他的文件夹名称外,对于每个用户,AC_CONFIG_FILE条目也完全相同。我尝试使用“--enable-user = User”,然后是AC_SUBST(USERDIR),这也有助于在Makefile.am中设置“SUBDIRS = @ USERDIR @”。除了在指定“AC_CONFIG_FILE =([apple/$ {USERDIR}/Makefile])”时在用户文件夹下未创建“Makefile.in”这一事实,一切看起来都不错。
请教如何解决这个问题。在最坏的情况下,我可以创建软链接:(
关于运行configure的错误信息是“config.status:error:找不到输入文件:'apple/john/Makefile.in' – mpathi
我建议使用分布式版本控制系统来代替这个方案。你的工具 – ptomato
@ptomato,在之前的一个事件中,分布式版本控制以完全陌生的分支结束(团队自定义主代码),跟踪和维护变得困难,这是一个非官方的内部使用工具,到40个团队,每个团队都有自己的定制要求,我的目标是提供稳定的核心(我维护)和灵活的操作(针对每个团队)的组合。例如,读取makefile中通配符的参数。自动工具是否可以帮助删除我的指针? – mpathi