2017-05-26 1036 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”属性,以消除该问题。

相关问题