首页 > 解决方案 > CMake & C++ - 在几个 git 子模块之间共享库的最佳方法是什么

问题描述

我正在处理包含 4 个子模块的大型 C++ 项目(使用 cLion)。我编写了小型 C++ 库,它提供了从 .properties 文件中读取的能力(在 Java 中最常见..)。

“Application.properties”文件应该包括公共变量和每个项目的变量。例如; 我正在使用 Elasticsearch 数据库,所有 4 个子模块都应该知道他的地址。此外,由于我有 4 个外国项目,我需要不断维护 5 个不同的 CMakeLists 文件(主项目的 4 个子模块 1)。

我的解决方案是在主项目根目录中设置共享代码,并通过在每个项目中包含库来使用它。

怀着感激之情,科比。

标签: c++11cmakegit-submodulesclioncmake-modules

解决方案


我的解决方案是为子模块中的每个模块创建一个“通用模块”,我在 cmakelists.txt 文件中添加了以下行。ADD_LIBRARY(MyLib ../Common/a.cpp ../Common/b.cpp) target_link_libraries(MyTargetName LINK_PUBLIC MyLib)

因为(子模块的)主存储库本身就是一个 git 存储库。我可以轻松管理分片库。谢谢。


推荐阅读