2.4 构建工具Bazel
大多数开发人员使用Android Studio + Gradle + Maven作为他们的日常工具,这种配置已经足够了。不过,笔者强烈建议使用Bazel,它是谷歌内部工具的开源版本。Bazel具有很多重要的功能,最新版本是Bazel 0.22,与1.0正式发布版本非常接近。很多离开谷歌的工程师,仍会继续使用Bazel。由Facebook开发的Buck与Bazel的功能非常相似。许多初创公司使用的也是Bazel工具。
Bazel的构建方法很简单,在Linux上执行下面的命令就可以安装Bazel:
sudo apt-get install bazel sudo apt-get upgrade bazel
Android Studio也支持Bazel。在Android Studio上安装Bazel插件即可使用,安装Bazel插件的步骤如图2-4所示。
图2-4 在Android Studio上安装Bazel插件
TensorFlow中支持Gradle、Make和iOS的构建,谷歌内部不支持Gradle,只是在开源的时候会对其进行测试。
2.4.1 BazeI生成调试
生成调试命令为:
bazel build --compilation_mode=dbg //tensorflow/lite/toco
2.4.2 BazeI Query命令
如果读者想找出tensorflow/python/saved_model和tensorflow/core/kernels:slice_op算子之间的关系,可以执行bazel query "somepath(tensorflow/python/saved_model, tensorflow/core/kernels:slice_op)",执行结果如下:
//tensorflow/python/saved_model:saved_model //tensorflow/python/saved_model:builder //tensorflow/python:lib //tensorflow/python:pywrap_tensorflow //tensorflow/python:pywrap_tensorflow_internal //tensorflow/python:_pywrap_tensorflow_internal.so //tensorflow/python:tf_session_helper //tensorflow/core:all_kernels //tensorflow/core/kernels:array //tensorflow/core/kernels:slice_op
如果读者想找出//tensorflow/contrib/lite/java/demo/app/src/main:TfLiteCameraDemo和//tensorflow/contrib/lite/kernels:builtin_ops算子之间的依赖关系,可以执行bazel query"somepath(//tensorflow/contrib/lite/java/demo/app/src/main:TfLiteCameraDemo, //tensorflow/c ontrib/lite/kernels:builtin_ops)",执行结果如下:
//tensorflow/lite/java/demo/app/src/main:TfLiteCameraDemo //tensorflow/lite/java:tensorflowlite //tensorflow/lite/java:tflite_runtime //tensorflow/lite/java:libtensorflowlite_jni.so //tensorflow/lite/java/src/main/native:native //tensorflow/lite/kernels:builtin_ops
除Android特有的设定外,我们还要做TensorFlow的标准设定,具体的步骤请参考网页https://docs.bazel.build/versions/master/user-manual.html。