Наконец я понял это. На самом деле он сильно отличается от CMake или любого другого инструмента сборки, если вы работаете с фоном CMake (как и я).
Прежде всего, я предполагаю, что у вас есть предварительно собранный внешний язык c / c ++ библиотека, т.е. C: \ boost со структурами папок include, bin и lib, также предположим, что у вас есть еще две важные вещи: папка
- , в которой находится ваш основной файл WORKSPACE .
- Файл BUILD , который относится к вашему основному приложению (пакету)
Основной файл сборки должен быть:
cc_binary(
name = "hello-bazel",
srcs = ["main.cpp", "SomeClass.h", "SomeClass.cpp"],
deps = ["@boost//:boost_172_shared"],
)
Нам нужно чтобы добавить еще один файл сборки, давайте назовем его BUILD.boost в подпапке главной папки вашего приложения, то есть hello-bazel / dependency, чтобы он выглядел следующим образом:
hello-bazel -> папка-пример
- WORKSPACE -> file
- main -> папка, в которой находятся ваши BUILD , main. cpp, someclass.h и someclass. cpp
- зависимость -> папка с хостами BUILD.boost
Добавьте BUILD.boost , как указано выше в зависимости подпапки, чтобы включить:
cc_library(
name = "boost_172_shared",
srcs = glob(["lib/*.lib"]),
hdrs = glob( ["include/boost/*.hpp"] + ["include/boost/*.h"] +
["include/boost/**/*.hpp"] + ["include/boost/**/*.h"] +
["include/boost/**/**/**/*.hpp"] + ["include/boost/**/**/**/*.h"] +
["include/boost/**/**/*.hpp"] + ["include/boost/**/**/*.h"] ),
strip_include_prefix = "include/",
visibility = ["//visibility:public"]
)
Нам нужно отредактировать ваш файл WORKSPACE, как показано выше, чтобы включить следующее:
new_local_repository(
name = "boost",
path = "C:\\Development\\Libraries\\boost\\",
build_file = "dependency\\BUILD.boost",
)
Вышеприведенное new_local_repository - это ключевая вещь, которая указывает на вашу внешнюю библиотеку, как упомянуто - Ондрей К. в комментариях.