По умолчанию файлы, загруженные http_file
, могут быть включены как:
#include "external/<name>/file/<file_name>"
В данном конкретном случае:
#include "external/catch/file/catch.hpp"
Однако этот путь включения уродлив, он долженбыть завернутым в cc_library
.Кроме того, компиляция полного заголовочного файла catch для каждого теста замедлит сборку.Согласно документам catch , часть реализация реализации заголовка catch должна компилироваться отдельно.Вот так:
тест / BUILD:
cc_library(
name = "catch",
hdrs = ["@catch//file"],
srcs = ["catch.cpp"],
visibility = ["//visibility:public"],
strip_include_prefix = "/external/catch/file",
include_prefix = "catch",
linkstatic = True, # otherwise main() will could end up in a .so
)
cc_test(
name = "my_test",
deps = ["//test:catch"],
srcs = ["my_test.cc"],
)
test / catch.cpp:
#define CATCH_CONFIG_MAIN
#include "catch/catch.hpp"
test / my_test.cc:
#include "catch/catch.hpp"
TEST_CASE("my_test", "[main]") { /* ... */ }
Таким образом catch.cpp
не будет перекомпилирован, если только my_test.cc
изменится, сэкономив драгоценные секунды.