2

我有一个库和一个具有以下文件层次结构Lib的可执行文件:App

Lib/
  - external/
       - pugixml/
            - pugixml.hpp -> namespace ``pugi`` and header guard ``LIBA_PUGIXML_HPP``
            - pugixml.cpp 
App/
  - external/
       - pugixml/
            - pugixml.hpp  ->  namespace ``pugi`` and header guard ``APP_PUGIXML_HPP``
            - pugixml.cpp 

两者都App使用Lib外部库 pugixml(可能是不同的版本)。它们直接将这些文件包含在项目中,并且 pugixml 基本上不再是外部依赖项。

App依赖Lib并包括所有必要的来源Lib(它不链接Lib)以成功编译自身。

如何避免编译时出现的 pugixml.hpp 库的命名空间冲突App。如何在此设置中使用同一库的两个不同版本?

我看到以下选项:

  • 将命名空间pugixml移入Ainto namespace A{ namespace pugixml {...} },同样的 in app:将命名空间pugixml移入appintonamespace app{ namespace pugixml {...} }

  • 重命名所有命名空间?我该怎么做?硬编码?还是有为此的c ++语法?

什么是好方法?

4

0 回答 0