簡體   English   中英

bazel 可以構建 dll 嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM