移植dlib到android

原方地址:http://blog.csdn.net/brightming/article/details/50595977

1、文件目录 
/src/face_landmark_detection_test1_ex.cpp 
—-/jni/ 
———-Application.mk 
———-Android.mk

2、文件内容 
2.1 Application.mk

<code class="language-shell hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">[zzz@localhost jni]$ cat Application<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mk</span> 
<span class="hljs-label" style="box-sizing: border-box;">APP_STL:</span>=gnustl_static
<span class="hljs-label" style="box-sizing: border-box;">APP_CPPFLAGS:</span>=-frtti -fexceptions
<span class="hljs-label" style="box-sizing: border-box;">APP_ABI:</span>=armeabi-v7a
<span class="hljs-label" style="box-sizing: border-box;">APP_PLATFORM:</span>=android-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8</span>
<span class="hljs-label" style="box-sizing: border-box;">APP_BUILD_SCRIPT:</span>=Android<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mk</span>
APP_CFLAGS+=-DDLIB_NO_GUI_SUPPORT=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
[zzz@localhost jni]$ 
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul>

上面的APP_CFLAGS+=-DDLIB_NO_GUI_SUPPORT=1是因为不需要使用gui相关的功能。

编译dlib的时候,还改了两个文件引用头文件的地方:

<code class="language-c++ hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><png<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.h</span>>改为<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"../external/libpng/png.h"</span>
<jpeglib<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.h</span>>改为<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"../external/libjpeg/jpeglib.h"</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>

2.2 Android.mk

<code class="language-shell hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">[zzz@localhost jni]$ cat Android<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mk</span>


<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include $(CLEAR_VARS)</span>

<span class="hljs-label" style="box-sizing: border-box;">LOCAL_PATH:</span>=$(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">call</span> my-dir)
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_MODULE:</span>=face_landmark_detection_test1_ex
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_PATH:</span>=$(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">call</span> my-dir)
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_MODULE_FILENAME:</span>=face_landmark_detection_test1_ex
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_SRC_FILES:</span>=../../face_landmark_detection_test1_ex<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.cpp</span>  /home/zzz/software/dlib-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">18.18</span>/dlib/all/source<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.cpp</span>
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_C_INCLUDES:</span>=/home/zzz/software/dlib-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">18.18</span>/
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#LOCAL_EXPORT_C_INCLUDES:=/home/zzz/software/dlib-18.18/</span>
include $(BUILD_EXECUTABLE)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul>

在LOCAL_SRC_FILES中,直接把dlib的源文件作为源文件之一,向之前在dlib移植到arm上说的一样,简单的不能再简单。 
注意头文件路径。

这里有个问题:如果我在上面打开了: 
include $(CLEAR_VARS) 
会报以下的错误:

<code class="language-shell hljs asciidoc has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">[zzz@localhost jni]$ ndk-build NDK<span class="hljs-emphasis" style="box-sizing: border-box;">_APPLICATION_</span>MK=Application.mk
make: *** No rule to make target <span class="hljs-smartquote" style="box-sizing: border-box;">`/home/zzz/software/android-ndk-r9d/build/core/../../face_landmark_detection_test1_ex.cpp'</span>, needed by <span class="hljs-smartquote" style="box-sizing: border-box;">`/home/zzz/software/dlib-18.18/examples/build_android/obj/local/armeabi-v7a/objs/face_landmark_detection_test1_ex/__/__/face_landmark_detection_test1_ex.o'</span>.  Stop.
[zzz@localhost jni]$ 
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

2.3 执行

<code class="language-shell hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">zzz<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@localhost</span> jni]<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>ndk-build <span class="hljs-constant" style="box-sizing: border-box;">NDK_APPLICATION_MK</span>=<span class="hljs-constant" style="box-sizing: border-box;">Application</span>.mk
[armeabi-v7a] <span class="hljs-constant" style="box-sizing: border-box;">Compile</span>++ <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">thumb:</span> face_landmark_detection_test1_ex <= face_landmark_detection_test1_ex.cpp
[armeabi-v7a] <span class="hljs-constant" style="box-sizing: border-box;">Compile</span>++ <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">thumb:</span> face_landmark_detection_test1_ex <= source.cpp
[armeabi-v7a] <span class="hljs-constant" style="box-sizing: border-box;">Executable</span>     <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> face_landmark_detection_test1_ex
[armeabi-v7a] <span class="hljs-constant" style="box-sizing: border-box;">Install</span>        <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> face_landmark_detection_test1_ex => libs/armeabi-v7a/face_landmark_detection_test1_ex
[zzz<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@localhost</span> jni]<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>ndk-build
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul>

因为我这个是有jin目录的,所以,不需要再额外指定NDK_APPLICATION_MK也可以。

问题记录: 
1、 
jni/: error: iostream: No such file or directory 
或者其他头文件找不到。 
解决办法: 
在Application.mk中加入: 
APP_STL:=gnustl_static 或 gnustl_shared , c++_static , c++_shared 
但是用system,stlport_static stlport_shared会有头文件找不到。 
参考: 
http://stackoverflow.com/questions/9130429/android-ndk-build-iostream-no-such-file-or-directory

APP_STL的取值可以为: 
system stlport_static stlport_shared gnustl_static gnustl_shared gabi++_static gabi++_shared c++_static c++_shared none

2、 
/build-binary.mk:393: * target pattern contains no `%’

3、 
如果我把Android.mk修改为如下(先编译出dlib的静态库,再与测试程序链接),就会报如下错误:

<code class="language-shell hljs asciidoc has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">[zzz@localhost jni]$ ndk-build
[armeabi-v7a] Compile++ thumb: dlib <= source.cpp
[armeabi-v7a] StaticLibrary  : dlib.a
make: *** No rule to make target <span class="hljs-smartquote" style="box-sizing: border-box;">`/home/zzz/software/android-ndk-r9d/build/core/../../face_landmark_detection_test1_ex.cpp'</span>, needed by <span class="hljs-smartquote" style="box-sizing: border-box;">`/home/zzz/software/dlib-18.18/examples/build_android/obj/local/armeabi-v7a/objs/face_landmark_detection_test1_ex/__/__/face_landmark_detection_test1_ex.o'</span>.  Stop.</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

Android.mk的内容为:

<code class="language-shell hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">[zzz@localhost jni]$ cat Android<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mk</span>


<span class="hljs-label" style="box-sizing: border-box;">LOCAL_PATH:</span>=$(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">call</span> my-dir)
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_MODULE:</span>=dlib
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_MODULE_FILENAME:</span>=dlib
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_SRC_FILES:</span>=/home/zzz/software/dlib-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">18.18</span>/dlib/all/source<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.cpp</span>
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_C_INCLUDES:</span>=/home/zzz/software/dlib-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">18.18</span>/


<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#LOCAL_EXPORT_C_INCLUDES:=/home/zzz/software/dlib-18.18/</span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include $(BUILD_EXECUTABLE)</span>
include $(BUILD_STATIC_LIBRARY)

<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">####################################################</span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include $(CLEAR_VARS)</span>
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_PATH:</span>=$(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">call</span> my-dir)
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_MODULE:</span>=face_landmark_detection_test1_ex
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_MODULE_FILENAME:</span>=face_landmark_detection_test1_ex
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_SRC_FILES:</span>=../../face_landmark_detection_test1_ex<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.cpp</span> <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># /home/zzz/software/dlib-18.18/dlib/all/source.cpp</span>
<span class="hljs-label" style="box-sizing: border-box;">LOCAL_C_INCLUDES:</span>=/home/zzz/software/dlib-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">18.18</span>/


<span class="hljs-label" style="box-sizing: border-box;">LOCAL_SHARED_LIBRARIES:</span>=dlib

<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#LOCAL_EXPORT_C_INCLUDES:=/home/gumh/software/dlib-18.18/</span>
<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include $(BUILD_EXECUTABLE)</span>
include $(BUILD_STATIC_LIBRARY)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li></ul>

原因还不明白。。。

补充(2016-1-30): 
由于上面编译的时候,没有将jpeg,png的库编译进去,因此,在真正运行程序的时候,会报错。重新将相关的代码组织进mk文件进行编译,文件结构没变,各文件的情况如下:

1、Application.mk

<code class="language-shell hljs handlebars has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="xml" style="box-sizing: border-box;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_STL:</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">gnustl_static</span>  ##<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">ok</span>
#<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_STL:</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">stlport_static</span> ##<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">not</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">work</span>!
#<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_STL:</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">system</span>  ##<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">not</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">work</span>!
#<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_STL:</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">c++_static</span>  ##<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">ok</span>
#<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_STL:</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">c++_shared</span>  ##<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">ok</span>
#<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_STL:</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">gnustl_shared</span> ##<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">ok</span>
<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_CPPFLAGS:</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">-frtti</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">-fexceptions</span>
<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_ABI:</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">armeabi-v7a</span>
<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_PLATFORM:</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">android-8</span>
<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_BUILD_SCRIPT:</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">Android.mk</span>
<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_CFLAGS</span>+=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">-DDLIB_NO_GUI_SUPPORT=on</span>
#<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_CFLAGS</span>+=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">-DDLIB_PNG_SUPPORT=off</span>
<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_CFLAGS</span>+=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">-DDLIB_JPEG_SUPPORT=on</span>
<span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">APP_CFLAGS</span>+=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">-DDLIB_JPEG_STATIC=on</span></span></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul>

2、Android.mk

<code class="language-shell hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">
all_cpp_files_recursively = \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval src_files = <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>wildcard <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>/*.cpp)) \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval src_files = <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">src_files:</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span>)/%=%))<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>src_files) \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval item_all = <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>wildcard <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>/*)) \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>foreach item, <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>item_all) <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>),\
  <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval item <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">item:</span>%.cpp=%)) \
  <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>call all_cpp_files_recursively, <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>item))\
 )


<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#3 自定义了一个all_c_files_recursively 函数,递归遍历返回给定目录下所有C源文件。</span>
all_c_files_recursively = \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval src_files = <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>wildcard <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>/*.c)) \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval src_files = <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">src_files:</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span>)/%=%))<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>src_files) \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval item_all = <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>wildcard <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>/*)) \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>foreach item, <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>item_all) <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>),\
  <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval item <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">item:</span>%.c=%)) \
  <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>call all_c_files_recursively, <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>item))\
 )


<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>call my-dir)
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">include</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">CLEAR_VARS</span>)
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#####################程序################</span>
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_SRC_FILES</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>call all_cpp_files_recursively,<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span>)/../../../dlib/external/libjpeg/) <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#将jpeg相关代码加入</span>
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_SRC_FILES</span> += <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span>)/../../../dlib/all/source.cpp
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_C_INCLUDES</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=<span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/home/gumh</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/software/dlib</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">18.18</span>/ <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span>)/../../../dlib/entropy_decoder/
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_CPP_INCLUDES</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_C_INCLUDES</span>}
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_CXX_INCLUDES</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_C_INCLUDES</span>}

<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>warning <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"-------------the value of LOCAL_SRC_FILES is $(LOCAL_SRC_FILES)--------------------"</span>)

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">##neon start</span>
<span class="hljs-constant" style="box-sizing: border-box;">TARGET_ARCH_ABI</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=armeabi-v7a
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_ARM_MODE</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= arm 
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_ARM_NEON</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">true</span>

ifeq (<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">TARGET_ARCH_ABI</span>),armeabi-v7a)
    <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_CFLAGS</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= -<span class="hljs-constant" style="box-sizing: border-box;">DHAVE_NEON</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
    <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_CXXFLAGS</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= -<span class="hljs-constant" style="box-sizing: border-box;">DHAVE_NEON</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
endif
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_CFLAGS</span> += -mfloat-abi=softfp -mfpu=vfpv4
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">###neon end</span>


<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">##放在一起编译</span>
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_MODULE</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=face_landmark_detection_test1_ex
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_MODULE_FILENAME</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=face_landmark_detection_test1_ex
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_SRC_FILES</span>+=../../face_landmark_detection_test1_ex.cpp 

<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">include</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">BUILD_EXECUTABLE</span>)
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li></ul>

从上面的文件可以看到,其实就是配合source.cpp定义的宏,把相关的jpeg的源代码加入一起编译。

是否可以先编译出dlib的静态库,给后面的应用程序编译使用呢? 
新加一个Android-prebuild.mk:

<code class="language-shell hljs http has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">

<span class="ruby" style="box-sizing: border-box;">all_cpp_files_recursively = \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval src_files = <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>wildcard <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>/*.cpp)) \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval src_files = <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">src_files:</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span>)/%=%))<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>src_files) \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval item_all = <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>wildcard <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>/*)) \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>foreach item, <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>item_all) <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>),\
  <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval item <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">item:</span>%.cpp=%)) \
  <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>call all_cpp_files_recursively, <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>item))\
 )


<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#3 自定义了一个all_c_files_recursively 函数,递归遍历返回给定目录下所有C源文件。</span>
all_c_files_recursively = \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval src_files = <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>wildcard <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>/*.c)) \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval src_files = <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">src_files:</span><span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span>)/%=%))<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>src_files) \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval item_all = <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>wildcard <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$1</span>/*)) \
 <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>foreach item, <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>item_all) <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>),\
  <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>eval item <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">item:</span>%.c=%)) \
  <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>call all_c_files_recursively, <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>item))\
 )




<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>call my-dir)

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">############1##################</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#####################libdlib.a################</span>
    <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>warning <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"--------build dlib ---------"</span>)
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">include</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">CLEAR_VARS</span>)
    <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_MODULE</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=dlib
    <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_SRC_FILES</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>call all_cpp_files_recursively,<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span>)/../../../dlib/external/libjpeg/)
    <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_SRC_FILES</span> += <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span>)/../../../dlib/all/source.cpp
    <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_C_INCLUDES</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=<span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/home/gumh</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/software/dlib</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">18.18</span>/ <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span>)/../../../dlib/entropy_decoder/
    <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_CPP_INCLUDES</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_C_INCLUDES</span>}
    <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_CXX_INCLUDES</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">${</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_C_INCLUDES</span>}

    <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>warning <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"-------------the value of LOCAL_SRC_FILES is $(LOCAL_SRC_FILES)--------------------"</span>)

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">##neon start</span>
    <span class="hljs-constant" style="box-sizing: border-box;">TARGET_ARCH_ABI</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=armeabi-v7a
    <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_ARM_MODE</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= arm 
    <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_ARM_NEON</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">true</span>

    ifeq (<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">TARGET_ARCH_ABI</span>),armeabi-v7a)
        <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_CFLAGS</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= -<span class="hljs-constant" style="box-sizing: border-box;">DHAVE_NEON</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
        <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_CXXFLAGS</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>= -<span class="hljs-constant" style="box-sizing: border-box;">DHAVE_NEON</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
    endif

    <span class="hljs-constant" style="box-sizing: border-box;">LOCAL_CFLAGS</span> += -mfloat-abi=softfp -mfpu=vfpv4

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">########海思的设置:set(CMAKE_CXX_FLAGS           "-mthumb -mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -mno-unaligned-access -fno-aggressive-loop-optimizations"     CACHE STRING "c++ flags")</span>

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">###neon end</span>

    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">include</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">BUILD_STATIC_LIBRARY</span>)

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">########2##################</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">##########build app##############</span>
<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span>warning <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"--------build app---------"</span>)

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#use prebuild dlib</span>
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_MODULE</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=mydlib
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_SRC_FILES</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=libdlib.a
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_EXPORT_C_INCLUDES</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=<span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/home/gumh</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/software/dlib</span>-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">18.18</span>/ <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">LOCAL_PATH</span>)/../../../dlib/entropy_decoder/
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">include</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">PREBUILT_STATIC_LIBRARY</span>)

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">###app#######</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">include</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">CLEAR_VARS</span>)
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_MODULE</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=face_landmark_detection_test1_ex
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_SRC_FILES</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=../../face_landmark_detection_test1_ex.cpp 
<span class="hljs-constant" style="box-sizing: border-box;">LOCAL_STATIC_LIBRARIES</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span>=mydlib
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">include</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">BUILD_EXECUTABLE</span>)

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">##############</span>
</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li><li style="box-sizing: border-box; padding: 0px 5px;">73</li><li style="box-sizing: border-box; padding: 0px 5px;">74</li><li style="box-sizing: border-box; padding: 0px 5px;">75</li><li style="box-sizing: border-box; padding: 0px 5px;">76</li><li style="box-sizing: border-box; padding: 0px 5px;">77</li></ul>

在把Application.mk里的APP_BUILD_SCRIPT改为:Android-prebuilt.mk 
APP_BUILD_SCRIPT:=Android-prebuilt.mk

一个简单的make.sh

<code class="language-shell hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">[zzz@localhost jni]$ cat make.sh 
<span class="hljs-shebang" style="color: rgb(0, 102, 102); box-sizing: border-box;">#!/bin/sh
</span>
ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=Application.mk 
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>

(如何传递参数,在Android.mk里可以根据参数来编译不同的部分?如 
ifeq ($(my_target),”dlib”)就编译dlib库,否则编译其他程序。 

执行: 
1、先构建libdlib.a 
2、将编译出来的libdlib.a拷贝到Android.mk的同目录下, 
2、再构建app

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值