我已经阅读了Android.mk文件中所有重要的ndk文档,但找不到关于我的问题的信息。
环境信息:WinXP(SP3)、Cygwin>1.7、Eclipse 3.6.2、Sequoyah Native Support、ndk-5c、sdk-11、ADT-11
我来举一个小例子:
- 项目本身被放置到D:/Projects/mobile/workspace/
- Boost(精简版)放在D:/Projects/mobile/workspace/mesf/jni/tools
- 简单文件"mesf.cpp"包含#include,该文件被放置到D:/Projects/mobile/workspace/mesf/jni/
- D:/Projects/mobile/workspace/mesf/jni/Application.mk保存条目APP_STL:=gnustl_static
- D:/Projects/mobile/workspace/mesf/jni/Android.mk保存升压路径的条目**LOCAL_FLAGS+=-I$(LOCAL_PATH)/tools/**
- 如果没有特定的boost-include,它可以成功编译,并且源代码(作为共享对象)可以在目标手机上远程调试
- ndk构建运行后的控制台输出:-I/cygdrive/d/Projects/mobile/workspace/mesf/jni/tools/-fexceptions-frtti-DBOOST_THREAD_LINUX-DBOOST _HAS_PTHREADS-d_arm_-d_REENTRANT-d_GLIBCXX__PTHREADS-DBOOST_HAS_GETTIMEOFDAY-Wa,--noexecstack-fexception-frtti-O0-g
- 但是,如果我更改为LOCAL_FLAGS+=-Ijni/tools/,则#include for boost有效
- ndk构建运行后的控制台输出:**-Ijni/tools/-fexceptions-frtti-DBOOST_THREAD_LINUX-DBOOSTR_HAS_PTHREADS-D_arm_-D_REENTRANT-D_GLIBCXX__PTHREAD-DBOO STR_HAS_GETTIMEOFDAY-Wa,--noexecstack-fexcessions-frti-O0-g**
- 我们可以在控制台输出中看到,路径已从-I/cygdrive/d/Projects/mobile/workspace/mesf/jni/tools/更改为-Ijni/tools/
谷歌推荐的方法是LOCAL_FLAGS+=-I$(LOCAL_PATH)/tools/(AFAIK),但它不起作用!
我的问题是,这是ndk构建、cygwin或Sequoyah错误,还是我的未定义路径变量的错误?
有人有主意吗?
这是一个项目失败!我已经用(ndk-5c)设置了一个新项目,包括旧项目的所有源内容,现在它可以工作了!