在我的团队中,我们使用C ++作为主要语言制作了一些应用程序,当一个新项目到来时,我们总是在需要时复制粘贴其他项目的文件。这很频繁,我们进行了讨论以改进。
因此,为了改变这种情况,我们决定创建一个独特的库(或许多小库),其中包含不属于业务本身的所有内容。我们决定使用cmake。
但是,我的问题是,是否有一种方法可以导入这个库或这些小库,而无需在每次提交更改时编译它们。
例如,如果我们有两个库和两个项目,其中:
拥有我们的源目录:
如何在项目A和B中设置CmakeLists,这样,当我们更改库A或B中的某些内容,然后重新运行cmake然后在项目B中生成时,所有更改都会显示在其中。对于另一个项目也一样吗?。
有可能吗?
答案 0 :(得分:0)
我在处理某个个人项目时遇到了同样的问题。
我可以提供一些建议,其中一些建议使用您解决问题的方法,其中一些建议没有:
方法1(不同的方法,多个源控制存储库)
不要使用不同的CMake文件拆分代码。 相反,使用单个CMake文件并将代码库拆分为较小的存储库。
例如,所有共享实用程序库都可以是单个存储库,而应用程序A和B则分别获取存储库。 (您当然可以将实用程序库拆分为多个存储库)。
这确保您不必一次保持/更新/使用所有项目,而只需要实际需要的项目。唯一的缺点是,你对签出这些项目的方式有所限制,但我不认为这是一个问题。
方法2(使用CMake的add_dependencies的方法相同)
您可以在应用程序A和B的编译中定义依赖关系,以便在更新相关库时自动构建它们。
以下是CMake add_dependencies手册的链接。