首页 > 解决方案 > 避免 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

标签: c++cmake

解决方案


推荐阅读