问题描述
我有一个c ++项目,使用bazel作为构建工具并使用tensorflow作为外部依赖项,bazel版本为0.24.1,而tensorflow版本为1.14.0,它工作正常(在我的项目中,我在tensorflow中使用tbb作为淡褐色的规则)。 但是,当我将bazel更新为3.1.0并将tensorflow更新为2.3.0时,出现错误:
ERROR: external/tbb/BUILD.bazel:11:1: in cmd attribute of genrule rule @tbb//:build_tbb: $(AR) not defined
我的WOKSPACE文件:
http_archive(
name = "org_tensorflow",strip_prefix = "tensorflow-2.3.0",sha256 = "2595a5c401521f20a2734c4e5d54120996f8391f00bb62a57267d930bce95350",urls = ["https://github.com/tensorflow/tensorflow/archive/tensorflow-2.3.0.tar.gz"]
)
我的构建文件:
cc_library(
name = "tf_utils",srcs = ["tf_utils.cpp"],hdrs = ["tf_utils.h"],deps = ["@org_tensorflow//tensorflow/cc/saved_model:loader","utils"],visibility = ["//visibility:public"]
)
cc_library(
name = "utils",hdrs = ["utils.h"],srcs = ["utils.cpp"],deps = ["@boost//:filesystem","@eigen_archive//:eigen","@tbb//:tbb",],# I use the tbb in the tensorflow
visibility = ["//visibility:public"]
)
问题,我在tensorflow项目本身中测试了tbb,它具有相同的错误。 我的测试方法是在tensorflow / BUILD中编写遵循c ++规则:
cc_library(
name = "test-tbb",srcs = ["test.cpp"],deps = ["@ngraph_tf//:ngraph_tf"] # ngraph_tf's deps has tbb
)
然后执行bazel build //tensorflow:test-tbb
,它具有相同的错误:
@tbb//:build_tbb: $(AR) not defined
第二,我认为问题可能出在tbb。我通过两种方式测试tbb:
- 我下载了tbb的源代码,并在tbb的根目录中创建了WORKSPACE(空)和BUILD(仅将tbb.BUILD重命名为BUILD),然后在bazel版本为0.24时执行
bazel build //:build_tbb
。 1,没事,但是将bazel版本更改为3.1.0时出现上述错误。 - 在一个小型项目中,我仅将tbb用作外部依赖项,而WORKSPACE具有一个名为tbb的http_archive,它的build_file指向tbb.BUILD。我在BUILD flie中编写了一个cc_library,它的deps = [“ @tbb:build_tbb”],测试结果与1)相同,当bazel版本为0.24.1可以,则3.1.0损坏了。
tbb.BUILD我使用了:https://github.com/tensorflow/tensorflow/blob/r2.3/third_party/ngraph/tbb.BUILD
第三,我遵循bazel(https://docs.bazel.build/versions/master/be/make-variables.html#custom_variables)的文档,在tbb规则“ build_tbb”中设置工具链= [“ @ bazel_tools // tools / cpp:current_cc_toolchain”] .BUILD,则错误消息是“在genrule规则的cmd属性中//:build_tbb: $(CC_FLAGS)未定义”。
第四,我遵循问题的解决方法:https://github.com/rnburn/satyr/issues/2,更新tbb.BUILD文件,然后重试,错误消息是“在规则@tbb //:build_tbb的cmd属性中: $(C_COMPILER)未定义”。
我只想使用tensorflow作为外部依赖关系,并在tensorflow中使用bazel目标“ tbb”语句(由于它位于tensorflow中,所以我不想重新编译多次)
有人知道如何正确地使用tensorflow和tbb作为使用 bazel 3.0.0 + 的外部依赖项吗?谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)