您的位置:首页 > 移动开发 > Android开发

移植dlib到android

2016-08-17 00:43 344 查看
原方地址: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: