我正在尝试使用bazel构建openssl
。这是我的当前设置:
在项目根目录下的/WORKSPACE
中,我有:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "openssl",
urls = ["https://www.openssl.org/source/openssl-1.1.1c.tar.gz"],
sha256 = "f6fb3079ad15076154eda9413fed42877d668e7069d9b87396d0804fdb3f4c90",
strip_prefix = "openssl-1.1.1c",
build_file = "@//:BUILD.openssl",
)
在我的
/BUILD.openssl
文件中,我有以下内容:genrule(
name = "build",
visibility = ["//visibility:public"],
srcs = glob(["**"]),
cmd = '\n'.join([
'./Configure darwin64-x86_64-cc -mmacosx-version-min="10.14" --prefix=$@ --openssldir=$@',
'make',
'make install',
]),
outs = ["openssl"],
)
我不太清楚在运行genrule
时我所在的文件夹,因为它会出现以下错误:
/bin/bash: ./Configure: No such file or directory
对于makefile目标,我应该为srcs
和outs
指定什么?
在这种情况下,我应该为openssl的--prefix
和--openssldir
指定什么目录?
我有点惊讶于没有很好地记录集成在Bazel中未配置的目标,考虑到这可能是最重要的用例。
export OSX_DEPLOYMENT_TARGET="10.14"
),否则生成的库将没有所需的LC_VERSION_
设置。我现在通过自定义的genrule
解决了这个问题,但是在configure_make
中是否可以导出变量呢? - user187676configure_env_vars
属性?https://github.com/bazelbuild/rules_foreign_cc/blob/16ddc00bd4e1b3daf3faee1605a168f5283326fa/examples/cc_configure_make/BUILD#L18 - Jin