C++ 关于保持大型C++;项目模块化?
我们的团队正在进入规模更大的项目,其中许多项目使用了几个开源项目 有什么建议或最佳实践可以使库和依赖项相对模块化,并且在发布新版本时易于升级 换句话说,让我们假设您制作了一个开源项目的分支程序。随着这两个项目的发展,维护和共享核心更新的最简单方法是什么C++ 关于保持大型C++;项目模块化?,c++,open-source,shared-libraries,libraries,modularity,C++,Open Source,Shared Libraries,Libraries,Modularity,我们的团队正在进入规模更大的项目,其中许多项目使用了几个开源项目 有什么建议或最佳实践可以使库和依赖项相对模块化,并且在发布新版本时易于升级 换句话说,让我们假设您制作了一个开源项目的分支程序。随着这两个项目的发展,维护和共享核心更新的最简单方法是什么 关于我只想问的问题,请给我一些建议……我不需要“你应该这样做”或“你为什么这样做”。谢谢。对于开源项目的克隆,你最头疼的问题之一就是根据上游来源保持同步/修补。您可能不关心新功能,但您肯定需要应用关键的bug修复 我的建议是小心地将这些内部项目包
关于我只想问的问题,请给我一些建议……我不需要“你应该这样做”或“你为什么这样做”。谢谢。对于开源项目的克隆,你最头疼的问题之一就是根据上游来源保持同步/修补。您可能不关心新功能,但您肯定需要应用关键的bug修复 我的建议是小心地将这些内部项目包装到共享库中,这样,如果ABI没有被更改破坏,您就可以或多或少地轻松地升级这些部分 还有一件事——如果你在一个开源项目中发现并修复了bug——不要把修复工作留给你自己。把补丁往上游推。这将使项目变得更好,并将节省您与新版本合并的时间。按优先顺序排列
就模块化而言,这是假设您使用的是相对稳定的第三方库,只有面向公众的接口的程序。仅仅因为你有源代码并不意味着你必须在你的代码中使用它。这应该允许基本上拖放更新。现在,这是完全理想化的,但这正是我所致力于的代码。我所在的一家公司多年来一直使用不受支持的Bugzilla旧版本,因为相对较小的更改无法与上游更改完全合并。没有人有时间去解决它。当然,如果我们需要上游的变化,我们会找到时间,但故事的寓意是,如果你分叉,那么你最终会遇到一个“不容易升级”的情况。与其试图避免这种情况发生,不如尽量减少这种情况发生的频率。我认为这属于Programmars.SE,但由于它太旧了,不允许迁移,我只是投票关闭它。+1支持包装-最好自己包装所有依赖项。+1建议推后补丁:即使你不想共享,我想你以后会在自己的补丁上得到社区的支持,所以没有理由不这么做。我也会说+1代表包装。。。但我不能投两次票。无论如何,包装第三方软件是一件轻而易举的事(至少对于经典代码来说,纯模板代码更难)。包装允许您在一个地方适应接口更改,而不让它影响整个公司代码库。最后,与所有中间件活动一样,您最好确保获得一些好的开发人员来处理它,因为它将被广泛使用,您不希望它出现错误。