c++ - 避免 C++ 中同一个库的第三方冲突
问题描述
简化我当前的问题,但这是我的想法。
我有两个第三方,包含文件夹如下所示:
lib_logging/include/lib_logging/lib_logging.h # version 2.0
lib_cluster/include/lib_cluster/lib_cluster.h
lib_cluster/include/lib_logging/lib_logging_for_cluster.h <- custom made header by lib_cluster
lib_cluster/include/lib_logging/lib_logging.h # version 1.0
有两个不同的 lib_logging.h,它们来自同一个库,但它们没有相同的版本:不同的方法签名和不同的宏。我知道 lib_logging.h 不应该被公开,因为它对于使用 lib_cluster 没有用,但我不是制作 lib_cluster 的人,正确修改它需要几个月的时间,我不能等待几个月。
我的主程序必须链接两个库:我想使用 lib_logging 2.0 和 lib_cluster。我怎样才能做到这一点?我不能只lib_cluster/include/lib_logging/
从包含目录中删除它,因为 lib_cluster 可能需要它。有没有办法告诉链接器特定的包含目录仅适用于内部的第 3 方?
我正在使用 CMake,Linux Ubuntu 18.04
解决方案
推荐阅读
- java - 为什么我的 RestTemplate 的 Mockito 存根不起作用
- python - Python:使用 QUOTE_NONNUMERIC 编写 CSV,但 None 除外
- python-packaging - 访问基于 Python 诗歌的包的数据资源
- json - 从 pandas.io.json 导入带有空列表的 json_normalize
- regex - 使用 awk 时缺少一些文件夹名称
- c# - 从谷歌图像搜索中获取 HTML 后,在 C# 搜索的第一页上获取每个图像的 URL 的最佳方法是什么?
- vba - 在 PowerPoint 中访问任务完成状态
- javascript - Nativescript 水平滚动效果很好,但不适用于项目模板
- autodesk-forge - 将 AutoDesk Forge 查看器环境从本地切换到 AutodeskProduction
- ios - 如果用户的信息不正确,如何阻止用户通过登录页面 IOS