2017-05-26 1037 views
0

長話短說,我試圖用Bazel在OSX上建立一個項目,該項目取決於uWebSockets。我遇到了一個問題,如何添加的OpenSSL的依賴,以便在uWebSockets文件都能夠包括文件從OpenSSL的,像這樣:如何使用Bazel構建包含openssl的第三方C++庫?

#include <openssl/opensslv.h> 

在回購我的工作區文件看起來像(它看起來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 

我必須在這裏失去了一些東西,我究竟做錯了什麼?

回答

0

我認爲你需要BUILD.systemssl文件中的「includes」屬性,以獲取正確的包含路徑,以取決於庫的任何內容。

是否有一個原因,你的glob是以「**」開頭的,是因爲版本號是在文件路徑中編碼的?您還應該查看可以在WORKSPACE文件中用於new_local_repository的「strip_prefix」屬性,以消除該問題。

相關問題