[英]Can bazel build dll?
我已經嘗試使用 bazel 編譯 DLL 好幾天了。 我按照示例bazel build希望生成一個 DLL。 我使用的BUILD文件如下:
cc_binary(
name = "expdtctlib",
srcs = ["expdtctlib.cpp"],
deps = [
"//tensorflow/core:tensorflow",
],
linkshared = 1,
)
cc_binary(
name = "expdetect",
srcs = ["expdetect.cpp"],
data = [":expdtctlib.dll"],
deps = [
"//tensorflow/core:tensorflow",
],
)
我運行了命令:
bazel build :expdetect
但是一個錯誤說“expdtctlib.dll”丟失了。 bazel不是先生成“expdtctlib.dll”再編譯“expdetect.cpp”嗎?
此外,我嘗試使用另一種方式來構建DLL。 BUILD 文件如下:
cc_library(
name = "ExpDetector",
srcs = ["ExpDetector.cc"],
hdrs = ["ExpDetector.h"],
deps = [
"//tensorflow/core:tensorflow",
],
)
cc_binary(
name = "expdetect",
srcs = ["expdetect.cc"],
deps = [
"//tensorflow/core:tensorflow",
":ExpDetector",
],
)
經過長時間的編譯,雖然輸出了一個EXE文件並且運行良好,但我只能找到.lib和.exp文件,而找不到.dll文件。
有沒有人使用 bazel 成功構建 DLL?我需要你的幫助。
我修改了兩個 BUILD 文件如下,效果很好!
filegroup(
name = "srcs",
srcs = glob(["**"]),
visibility = ["//examples:__pkg__"],
)
cc_binary(
name = "expdtctlib.dll",
srcs = ["expdtctlib.cc",
"expdtctlib.h"],
deps = [
"//tensorflow/core:tensorflow",
],
linkshared = 1,
)
cc_binary(
name = "expdetect",
srcs = ["expdetect.cc"],
data = [":expdtctlib.dll"],
deps = [
"//tensorflow/core:tensorflow",
],
)
下面的一個在“//tensorflow”中。
exports_files(
[
"LICENSE",
"ACKNOWLEDGEMENTS",
],
)
package(default_visibility = ["//visibility:public"])
filegroup(
name = "srcs",
srcs = glob(["**"]) + [
"//tensorflow/tensorflow/detector0405:srcs",
],
)
我對 bazel 和 c++ 不熟悉,但這些修改工作。我會閱讀Bazel 文檔以了解更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.