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

CMake - Same Filename in two libraries collide

本文关键字:文件名 冲突 两个 CMake      更新时间:2023-10-16

我正在基于这个框架开发一个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 文件。

不要将第三方库标头直接放在编译器的标头搜索路径中。将它们放在指示它们来自的库的目录后面。例如,wiiuse标头可能应该在名为 wiiuse 的目录中,并且该目录应该在搜索路径中。因此,为了包含其中的"IO.h"标头,您需要执行以下操作:

#include <wiiuse/IO.h>

如果您不知道如何使用XCode搜索路径,我也不会。但也许这个问题会对你有所帮助。