簡體   English   中英

如何使用Bazel構建包含openssl的第三方c ++庫?

[英]How to use Bazel to build third party c++ library that includes openssl?

長話短說,我試圖使用Bazel在依賴uWebSockets的 OSX上構建項目。 我遇到一個有關如何添加openssl作為依賴項的問題,以便uWebSockets中的文件能夠包含來自openssl的文件,如下所示:

#include <openssl/opensslv.h>

我在倉庫中的WORKSPACE文件如下所示(它查找通過自制軟件安裝的openssl):

new_http_archive(
    name = "uwebsockets",
    urls = ["https://github.com/uNetworking/uWebSockets/archive/master.zip"],
    build_file = "BUILD.uWebSockets",
)

new_local_repository(
    name = "systemssl",
    path = "/usr/local/opt/openssl",
    build_file = "BUILD.systemssl",
)

BUILD.uWebSockets:

cc_library(
    name = "uwebsockets-lib",
    hdrs = glob(["**/src/*.h"]),
    srcs = glob(["**/src/*.cpp"]),
    visibility = ["//visibility:public"],
    deps = [
        "@systemssl//:openssl",
    ],
)

BUILD.systemssl:

cc_library(
    name = "openssl",
    hdrs = glob(["**/openssl/*.h"]),
    srcs = glob([
        "**/libssl.a",
        "**/libcrypto.a",
    ]),
    visibility = ["//visibility:public"],
)

每當我嘗試運行構建時,一切都正確構建,但我得到:

external/uwebsockets/uWebSockets-master/src/Networking.h:7:10: fatal error: 'openssl/opensslv.h' file not found

我一定在這里想念什么,我做錯了什么?

我認為您需要BUILD.systemssl文件中的“ includes”屬性,以便根據庫確定任何內容的正確包含路徑。

您的glob是否以“ **”開頭是有原因的,因為版本號是在文件路徑中編碼的? 您還應該查看WORKSPACE文件中可用於new_local_repository的“ strip_prefix”屬性,以將其刪除。

暫無
暫無

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

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