簡體   English   中英

在 bazel 項目中包含本地構建的非 bazel c++ 庫

[英]Include a locally built non bazel c++ library in bazel project

我是 bazel 和 c++ 開發的新手。 我的情況與此處此處發布的情況類似。 按照第一個鏈接中發布的步驟,我正在嘗試將這個本地構建的 package 加載到 bazel 項目中。

WORKSPACE

new_local_repository(
    name = "openvino",
    build_file = "backend/cpp/BUILD",
    path = "C:\\Users\\user\\OpenVINO2022.1.0.dev20220316_OMP\\openvino",
)

在 backend/cpp 文件夾中BUILD文件

cc_library(
    name = "openvino",
    srcs = glob(["**/*.lib"])+ glob(["**/*.dll"]),
    hdrs = glob(["**/*.hpp"]),
    includes = ["src/inference/include/openvino"],
    visibility = ["//visibility:public"]
)

cc_library(
    name = "main_c",
    srcs = ["main_c.cc"],
    hdrs = [
        "utils.h",
    ],
    deps = [
        "//flutter/cpp/c:headers",
    ],
    alwayslink = 1,
    visibility = ["//visibility:public"]
)

cc_binary(
    name = "libbackend.dll",
    linkshared = 1,
    win_def_file = "//flutter/cpp/c:dll_export.def",
    deps = [
        ":openvino",
        ":main_c",
    ],
     linkopts = ["-shared"],
)

后端/cpp 文件夾中的 main_c.cc 文件

#include "openvino\src\inference\include\openvino\openvino.hpp"

但我仍然無法加載這個庫。

錯誤

backend/cpp/main_c.cc(7): fatal error C1083: Cannot open include file: 'openvino\src\inference\include\openvino\openvino.hpp': No such file or directory

任何幫助表示贊賞。

這似乎是您的包含路徑的問題。 header 的包含路徑應​​該是。

#include "src\inference\include\openvino\openvino.hpp"

或者,當您將includes = ["src/inference/include/openvino"]添加到您的 'openvino' 目標時,您也可以使用包含路徑。

#include "openvino.hpp"

如果由於某種原因您需要保持包含路徑相同,您可以在“openvino”目標中添加包含前綴。

例如

cc_library(
    name = "openvino",
    srcs = glob(["**/*.lib"])+ glob(["**/*.dll"]),
    hdrs = glob(["**/*.hpp"]),
    # Remove this line.
    # includes = ["src/inference/include/openvino"],
    
    # Add this line, to allow include as if it were in an "openvino"
    # directory.
    include_prefix = "openvino",
    visibility = ["//visibility:public"]
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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