【问题标题】:Bazel error "this rule is missing dependency declarations for the following files" when building tensorflow for android为 android 构建 tensorflow 时出现 Bazel 错误“此规则缺少以下文件的依赖项声明”
【发布时间】:2018-03-21 16:37:43
【问题描述】:

我正在尝试为 android 构建 tensorflow。我想在android上使用DecodeJpeg op。因此,我添加了文件decode_image_op.cc,在其中声明它是构建文件。

这是我运行构建 tensorflow 的命令

bazel build -c opt //tensorflow/contrib/android:libtensorflow_inference.so  --crosstool_top=//external:android/crosstool  --host_crosstool_top=@bazel_tools//tools/cpp:toolchain --cpu=arm64-v8a

这会引发以下错误

ERROR: /tensorflow/core/kernels/BUILD:4950:1: undeclared inclusion(s) in rule '//tensorflow/core/kernels:android_tensorflow_kernels':
this rule is missing dependency declarations for the following files included by 'tensorflow/core/kernels/decode_image_op.cc':
  '/tensorflow/core/lib/jpeg/jpeg_mem.h'
  '/tensorflow/core/platform/jpeg.h'

我应该在哪里添加这些头文件来解决这个错误?

【问题讨论】:

  • 您具体做了哪些修改,以及对哪个 BUILD 文件进行了修改?
  • tensorflow\core\kernels\BUILD 文件中,我在android_extended_ops_group1 下添加了decode_image_op.cc。一旦我开始构建它,bazel 就抱怨缺少 jerror.hjpeglib.hjconfig.hjmorecfg.h。我从here 下载了这些标头,并将它们放在core/kernelscore/platform 中。在此之后它顺利进行,直到出现此错误
  • @Jin 上面的评论回答你的问题了吗?

标签: android tensorflow bazel


【解决方案1】:

看来您可以在cc_binary 目标//tensorflow/contrib/android:libtensorflow_inference.sodeps 属性中添加cc_library 目标//tensorflow/core/kernels:android_tensorflow_image_op

//tensorflow/core/kernels:android_tensorflow_image_op 已经定义了decode_image_op.cc 及其依赖项。

【讨论】:

  • 我是 bazel 的新手。你是说这个cc_library( name = "decode_image", srcs = ["decode_image_op.cc"], deps = [ "//tensorflow/core/kernels:android_tensorflow_image_op" ],
  • 不,我认为没有必要创建一个新的cc_library 目标。尝试将定义为 here 的目标 //tensorflow/core/kernels:android_tensorflow_image_op 添加到您正在构建的目标 //tensorflow/contrib/android:libtensorflow_inference.so 的依赖项中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多