使用sqlite管理Makefile生成标志

使用sqlite管理Makefile生成标志,sqlite,build-process,makefile,Sqlite,Build Process,Makefile,我从一个源代码树中构建了二十多个目标,通常有三个活动分支,同时包含生产和调试构建。到目前为止,我使用了一个个人Makefile来定义目标,其中包含一个公共Makefile,该文件定义编译标志,然后包含来自特定源代码树的Makefile。这很管用,但我忍不住想还有更好的办法 我想使用sqlite3数据库来存储和组织构建标志的完整列表。在编译时,将查询数据库以生成基于项目版本、平台和开发/生产的标志,并启动构建 这个数据库将是一个单一的地方,在这里我可以记录和跟踪我所有开发版本的当前设置。一组基本的

我从一个源代码树中构建了二十多个目标,通常有三个活动分支,同时包含生产和调试构建。到目前为止,我使用了一个个人Makefile来定义目标,其中包含一个公共Makefile,该文件定义编译标志,然后包含来自特定源代码树的Makefile。这很管用,但我忍不住想还有更好的办法

我想使用sqlite3数据库来存储和组织构建标志的完整列表。在编译时,将查询数据库以生成基于项目版本、平台和开发/生产的标志,并启动构建

这个数据库将是一个单一的地方,在这里我可以记录和跟踪我所有开发版本的当前设置。一组基本的存储标志将在版本、目标平台和构建质量级别被更细粒度的标志覆盖

作为实现类似内容的一部分,我还将创建一些shell脚本来操作数据库和获取/设置标志,并允许实验室中的其他开发人员更轻松地采用这些脚本

这已经完成了吗?有这样的例子吗

是否有其他/更好的方法来处理此问题

两件事: *我无法修改原始项目生成文件。 *尝试使用像automake这样的东西会很麻烦,因为需要大量的用户
配置标志以在代码库的现有模块中启用调试级别的数量将达到数百。

我想您可能想看看更复杂的构建系统。看一看,和其他构建系统工具。我认为标准的GNU方法是通过./configure()脚本来完成您所描述的工作,尽管我可以看出管理不同的配置会很困难


尽管编写自己的Makefile配置系统是可能的,但我怀疑,如果希望代码得到更广泛的采用,使用更标准的构建系统是正确的答案

我想您可能想看看更复杂的构建系统。看一看,和其他构建系统工具。我认为标准的GNU方法是通过./configure()脚本来完成您所描述的工作,尽管我可以看出管理不同的配置会很困难


尽管编写自己的Makefile配置系统是可能的,但我怀疑,如果希望代码得到更广泛的采用,使用更标准的构建系统是正确的答案

IMHO,用数据库来做这件事太过分了。使用makefile includes是一种干净而简单的处理方法。关于这种方法,您有什么顾虑/问题/问题?也许有一种方法可以重组makefiles以实现您的目标,而无需添加数据库,也无需切换到完全不同的构建系统。

IMHO,使用数据库来实现这一目标是过分的。使用makefile includes是一种干净而简单的处理方法。关于这种方法,您有什么顾虑/问题/问题?也许有一种方法可以重组makefile以实现您的目标,无需添加数据库,也无需切换到完全不同的构建系统。

这需要在与原始生成文件源分开的情况下完成,因为该项目包含数十万行代码,并且生成文件经过13年的调整,在转换为类似autoconf的内容后将永远无法生存。我无法重写原始Makefiles如此ant、jam和autoconf在这个实例中不起作用我不明白——你说你有一个不能更改的现有Makefile,然后你建议将所有Makefile配置信息存储在sqlite中。我假设您将执行类似于“GCC=
从配置中选择编译器;
”的操作或者诸如此类…这需要在原始Makefile源代码之外进行,因为项目包含数十万行代码,并且Makefiles经过13年的调整,在转换为autoconf之类的东西后将永远无法生存。我无法如此简单地重写原始Makefiles,jam和autoconf在这个实例中不起作用我不明白——你说你有一个不能更改的现有Makefile,然后你建议将所有Makefile配置信息存储在sqlite中。我假设您将执行类似“GCC=
从配置中选择编译器;
”之类的操作。。。