仅在特定翻译单元中找不到头文件

时间:2014-09-24 08:50:23

标签: c++ android-ndk swig

我目前在Android上遇到了针对我的应用的编译问题。

在使用ndk-build编译我的本机库时出现以下错误:

BackgroundDisplayConfiguration.h:12:23: fatal error: glm/glm.hpp: 
No such file or directory
#include <glm/glm.hpp>
                          ^

令我感到困惑的是,我已经通过以下方式为Android.mk中的此仅限标题库指定了路径:

LOCAL_CPPFLAGS += -I../../glm/include

并且此路径存在并且是正确的,但是如果我搞砸了这条路径,我会在包含glm.hpp的其他文件中遇到相同的错误。当路径正确时,只有这个文件会产生错误,我不明白为什么。有什么指针吗?

编辑:好的,这更令人费解。 include选项出现在每个文件的每个编译器命令中,但不出现在swig生成的大包装器的编译器命令上(输出我的library_native_wrap.o),以及它产生错误的地方......好吧,它至少解释了观察到的行为。

1 个答案:

答案 0 :(得分:3)

所以我找到了一个解决方法,即使它感觉不对。

确实,我发现在编译我的库的每个源时,编译器命令实际上都有include选项,但是当编译swig的输出(那个大的唯一c ++包装器文件)时,选项不在那里了。

我找到了一种方法来解决这个问题,方法是将我的包含路径添加到LOCAL_EXPORT_C_INCLUDES

出于某种原因,编译包装器时不使用LOCAL_CPPFLAGS ...