我有一个库和一个具有以下文件层次结构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
移入A
intonamespace A{ namespace pugixml {...} }
,同样的 inapp
:将命名空间pugixml
移入app
intonamespace app{ namespace pugixml {...} }
重命名所有命名空间?我该怎么做?硬编码?还是有为此的c ++语法?
什么是好方法?