移植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
上面的APP_CFLAGS+=-DDLIB_NO_GUI_SUPPORT=1是因为不需要使用gui相关的功能。
编译dlib的时候,还改了两个文件引用头文件的地方:
2.2 Android.mk
在LOCAL_SRC_FILES中,直接把dlib的源文件作为源文件之一,向之前在dlib移植到arm上说的一样,简单的不能再简单。
注意头文件路径。
这里有个问题:如果我在上面打开了:
include $(CLEAR_VARS)
会报以下的错误:
2.3 执行
因为我这个是有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的静态库,再与测试程序链接),就会报如下错误:
Android.mk的内容为:
原因还不明白。。。
补充(2016-1-30):
由于上面编译的时候,没有将jpeg,png的库编译进去,因此,在真正运行程序的时候,会报错。重新将相关的代码组织进mk文件进行编译,文件结构没变,各文件的情况如下:
1、Application.mk
2、Android.mk
从上面的文件可以看到,其实就是配合source.cpp定义的宏,把相关的jpeg的源代码加入一起编译。
是否可以先编译出dlib的静态库,给后面的应用程序编译使用呢?
新加一个Android-prebuild.mk:
在把Application.mk里的APP_BUILD_SCRIPT改为:Android-prebuilt.mk
APP_BUILD_SCRIPT:=Android-prebuilt.mk
一个简单的make.sh
(如何传递参数,在Android.mk里可以根据参数来编译不同的部分?如
ifeq ($(my_target),”dlib”)就编译dlib库,否则编译其他程序。
)
执行:
1、先构建libdlib.a
2、将编译出来的libdlib.a拷贝到Android.mk的同目录下,
2、再构建app
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
相关文章推荐
- 移植Dlib 到 Android (Dlib + OpenCV2)以及可能会遇到的一些问题
- 移植dlib到android
- 算法移植优化(三)android dlib 人脸检测使用
- Android移植之硬件篇
- Android已经移植到PC上了。下一代PC操作系统!
- Android移植到VirtualBox及详细流程
- 将Android移植到FS2410开发板上
- 移植Android到具体硬件--方法及过程详解
- 上海杰得宣布成功移植Android
- 将directFB移植到Android系统上
- 启动Android系统移植计划
- 平安夜,移植LWC到Android成功!
- 牛蹄印章 阿牛是个好青年/内核移植,android
- Android原生(Native)C开发之四:SDL移植笔记
- 基于Windows手机的android移植可行性分析收藏
- Android移植之文件系统总结
- Lumaqq移植到Android 之进阶篇
- 移植Android开发过程
- 将Android移植到FS2410开发板上
- 抛砖引玉,谈谈Android移植到现有硬件平台的可行性