Как использовать огурец с базелом?
Я пытаюсь создать Bazel проект, который включает в себя Cucumber-CPP. Я не мог понять, как будет выглядеть его файл BUILD.
Поскольку Googletest теперь включает в себя собственный файл BUILD, он так же прост, как и файл. Нечто подобное было бы неплохо.
Мой файл WORKSPACE выглядит следующим образом
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "googletest",
sha256 = "927827c183d01734cc5cfef85e0ff3f5a92ffe6188e0d18e909c5efebf28a0c7",
strip_prefix = "googletest-release-1.8.1",
url = "https://github.com/google/googletest/archive/release-1.8.1.zip",
)
http_archive(
name = "cucumber-cpp",
sha256 = "73fddda099e39cc51ebee99051047067f6dcd437fbde60601ac48cb82a903dac",
url = "https://github.com/cucumber/cucumber-cpp/archive/v0.5.zip",
)
Моя спецификация BUILD файл
cc_test(
name = "app-spec",
srcs = glob(["**/*.cpp"]),
deps = [
"//src:app-lib",
"@cucumber-cpp//:main", //do not know if this is correct
],
)
cc_test(
name = "app-spec",
srcs = glob(["**/*.cpp"]),
deps = [
"//src:app-lib",
"@cucumber-cpp//:main", //do not know if this is correct
],
)
Тестовый файл BUILD
cc_test(
name = "app-test",
srcs = glob(["**/*.cpp"]),
deps = [
"//src:app-lib",
"@googletest//:gtest_main",
],
)
Но очевидно, что cucumber-cpp не является сборкой, так что мне интересно, как будет выглядеть его базовый файл BUILD?
1 ответ
Я тоже хотел это сделать, но не смог найти ничего, где бы кто-нибудь пытался это сделать. В конце концов я написал специальное расширение bazel для использования характеристик огурцов и корнишонов. В настоящее время это поддерживает только
(linux|osx)+cpp+cucumber
, но в дальнейшем я могу добавить поддержку Windows и других языков. Чтобы использовать это, добавьте это в свой файл WORKSPACE;
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
git_repository(
name = "rules_gherkin",
commit = "ef361f40f9716ad8a3c6a8a21111bb80d4cbd927", # Update this to match latest commit
remote = "https://github.com/silvergasp/rules_gherkin.git"
)
load("@rules_gherkin//:gherkin_deps.bzl","gherkin_deps")
gherkin_deps()
load("@rules_gherkin//:gherkin_workspace.bzl","gherkin_workspace")
gherkin_workspace()
Пример файла BUILD будет выглядеть следующим образом;
load("//gherkin:defs.bzl", "gherkin_library", "gherkin_test")
gherkin_library(
name = "feature_specs",
srcs = glob(["**/*.feature"]),
)
gherkin_test(
name = "calc_test",
steps = ":calculator_steps",
deps = [":feature_specs"],
)
load("//gherkin:defs.bzl", "cc_gherkin_steps")
cc_gherkin_steps(
name = "calculator_steps",
srcs = [
"CalculatorSteps.cpp",
],
visibility = ["//visibility:public"],
deps = [
"//examples/Calc/src:calculator",
"@cucumber_cpp//src:cucumber_main",
"@gtest",
],
)
Полный пример можно найти здесь .