Использование правил Foreign CC для создания AWS C SDK с помощью Bazel

#bazel #aws-sdk-cpp #bazel-rules

Вопрос:

Есть ли способ сделать это? Я пытаюсь создать части AWS SDK (s3 и rds) для использования в моем проекте Bazel. Я слышал, что rules_foreign_cc это можно использовать для интеграции проектов CMake с Bazel.

Ответ №1:

 load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies")

rules_foreign_cc_dependencies()

AWS_BUILD = """
filegroup(
    name = "sdk",
    srcs = glob(["**"]),
    visibility = ["//visibility:public"],
)
"""

new_git_repository(
    name = "aws_sdk",
    build_file_content = _ALL_CONTENT,
    commit = "2550901e1011e0ee1dc1bae44b42e1a2c6947c24",
    recursive_init_submodules = True,
    remote = "https://github.com/aws/aws-sdk-cpp",
    shallow_since = "1628277923  0000",
)
 

Затем вы можете ссылаться на двоичные файлы из файла СБОРКИ. Просто создайте aws-sdk с помощью cmake.

 load("@rules_foreign_cc//foreign_cc:defs.bzl", "cmake")

cmake(
    name = "aws_sdk",
    cache_entries = {
        "CMAKE_BUILD_TYPE": "Release",
        "BUILD_ONLY": "s3",
        "BUILD_SHARED_LIBS": "ON", 
        "ENABLE_TESTING": "OFF",
    },
    install = True,
    lib_source = "@aws_sdk//:sdk",
    out_shared_libs = [
        "libaws-cpp-sdk-core.so",
        "libaws-cpp-sdk-s3.so",
    ]
)