CMake - 两个库中的相同文件名发生冲突

CMake - Same Filename in two libraries collide

我正在基于这个框架开发一个Oculus项目: https://github.com/OculusRiftInAction/OculusRiftInAction

我从 rpavlik 添加了 wiiuse 库。 https://github.com/rpavlik/wiiuse

在两个项目中都存在一个名为 "IO.h" 的文件。使用 CMake 生成 XCode 项目后,文件 "opengl/Font.cpp" 中的 OculusRiftInAction 代码出现错误。它拉入 "IO.h" 文件,但它是来自 wiiuse 库的文件。我不知道如何从 OculusRiftInAction 框架中的原始位置拉入 "IO.h" 文件。

我怀疑这是一个一般的 CMake 或 XCode 问题。有人知道吗?

已修复:

我将 wiiuse 库设为静态,以某种方式解决了这个问题。但我不知道为什么它修复了它。我仍然可以使用该库,但它不再覆盖主代码中的 IO.h 文件。

不要将第三方库 header 直接放在编译器的 header 搜索路径中。将它们放在指示它们来自的库的目录后面。例如,wiiuse header 可能应该在名为 wiiuse 的目录中,而 that 目录应该在搜索路径中。因此,为了从中包含 "IO.h" header,您需要这样做:

#include <wiiuse/IO.h>

如果您不知道如何使用 XCode 来处理搜索路径,我也不知道。但也许 this question 可以帮助您。