C ++中的“静态插件”系统(通过构建系统)

时间:2010-11-26 15:49:59

标签: c++ project-management build-process

我目前正在研究C ++产品。它的设计具有相当大的灵活性,并且越来越大。现在我们计划在一个项目中进行合作,我们希望贡献产品的一部分:一些部分作为源代码,一些部分作为静态链接库,一些部分根本没有。

我想保留两个项目中使用的每个源文件的一个版本,并避免分支整个事物等。所以我想知道我需要能够在内部拥有所有文件的“完整产品”和也能够提取这些文件的一部分(不时地),并将该子集作为工作单元传递给其他人。 (我假设我们可以确保在合作项目中不更改这些文件,我们只会在那里添加内容。)

我想我需要

  • 一种松散耦合的软件架构,可以在不破坏系统的情况下移除部件。我认为术语“静态”插件在这里是合适的,因为我认为我可以从插件系统中学习,但我不需要能够动态加载它们,它们可以以静态方式链接/构建。我希望这可以迫使我和我的同事通过添加某种插件来扩展系统,而不是在这里和那里插入类,引入事物之间的耦合。
  • 一个构建系统,它支持我选择要构建的插件,并通过仅提取我需要的内容来“释放”新的子集。

是否有任何可能有用的互联网资源。要搜索的关键字是什么?

您对如何处理这个有什么建议吗?

2 个答案:

答案 0 :(得分:4)

Dobbs博士有一篇有趣的文章系列,你可能想看看。我似乎记得除了通常的动态链接之外,它还支持插件的静态链接。查看Building Your Own Plugin Framework

祝你好运!

答案 1 :(得分:0)

首先,你需要像git这样的东西:

http://github.com

管理来源。要管理“插件”,无论是否静态,可能需要查看已经执行此操作的现有系统:我可以建议检查Python如何执行此操作(因为有一个用于管理它的指定C API)。

我所知道的最好的构建系统是.. Python。忘了制作:)一个预建的是Erick Tryzelaars fbuild(可从github获得)。[我认为这是最好的,因为我正在使用它:]