[英]Header file not found only in specific translation unit
我目前在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
),这就是它产生错误的地方......好吧,它至少解释了观察到的行为。
所以我找到了一个解决方法,即使它感觉不太对劲。
实际上,我发现在编译我的库的每个源时,编译器命令实际上都有include选项,但是当编译swig的输出(那个大的唯一c ++包装器文件)时,选项就不再存在了。
我找到了一种方法来通过将我的包含路径添加到LOCAL_EXPORT_C_INCLUDES
来纠正这个LOCAL_EXPORT_C_INCLUDES
。
出于某种原因,编译包装时不使用LOCAL_CPPFLAGS
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.