有一个稳定且很少修改的 c ++& cmake& gcc / msvs 项目,它静态地使用我们的libfoo
库的1.0版进行对象识别。我们的客户现在需要一些新功能(一种新型特定对象的检测器),需要使用libfoo
版本2.0。
在整个项目中将libfoo
从版本1.0升级到2.0不是一个选项,原因有几个,主要原因是它会以不希望的方式改变识别行为(因此需要进行后续的艰苦调整)回到以前的质量水平,我们没有为这项工作付费。)
我看到以下强力解决方案:
namespace foo20 {...}
foo
重命名为foo-2.0
。foo-2.0
以实现新功能。除了'niceness'之外,这个解决方案实际上很麻烦libfoo
依赖于其他一些内部库,并且应该为每个库重复上面的过程。
有没有人知道整个问题或至少其中一个步骤的更好解决方案?