Как мне обратиться к системной библиотеке, используемой внешней зависимостью, если копты не разрешают системные пути?

Для Базеля я вытягиваю внешнюю библиотеку изнутри моего WORKSPACE:

new_http_archive(
name = "imgui",
build_file = "deps/BUILD.imgui",
sha256 = "c457fdc19b4e3aa74deccf6a2d9bc51f0d470b3acd9cc095bf04df16459d6474",
strip_prefix = 'imgui-1.62',
url = "https://github.com/ocornut/imgui/archive/v1.62.tar.gz",
)

внутри BUILD.imguiЯ пытаюсь построить это:

cc_library(
name = "imgui_sdl_opengl3",
linkopts = ["-ldl", "-lGL", "-L/usr/lib/x86_64-linux-gnu", "-lSDL2", "-lSDL"],
copts = ["-Iexamples/", "-D_REENTRANT",],
includes = [".","examples/libs/gl3w"],
hdrs = [
"examples/imgui_impl_opengl3.h",
"examples/libs/gl3w/GL/gl3w.h",
"examples/imgui_impl_sdl.h",
"examples/libs/gl3w/GL/glcorearb.h",
],
srcs = [
"examples/imgui_impl_opengl3.cpp",
"examples/imgui_impl_sdl.cpp",
"examples/libs/gl3w/GL/gl3w.c",
],
)

Проблема в том, что он не может найти #include <SDL.h>,
Я попытался добавить его в копты:

 copts = ["-Iexamples/", "-D_REENTRANT", "-I/usr/include/SDL"],

Но ошибка такова:

The include path '/usr/include/SDL' references a path outside of the execution root.

Хорошо. То же самое, если я попытаюсь добавить его в includes аргумент cc_library,

Я попробовал этот другой трюк, который я видел, где вы делаете заголовки видимыми через другое хранилище в Bazel, редактируя WORKSPACE как следует:

new_local_repository(
name = "SDL",
path = "/usr/include/SDL",
build_file_content = """package(
default_visibility = [
"//visibility:public",
],
)

cc_library(
name = "headers",
srcs = glob(["**/*.h"]),
)
""",

Проблема в том, что если я ссылаюсь на это репо как на внешнюю библиотеку, которую я пытаюсь построить, я получаю следующую ошибку:

external/imgui/examples/imgui_impl_sdl.cpp:38:10: error: 'SDL.h' file not found with <angled> include; use "quotes" instead
#include <SDL.h>
^~~~~~~
"SDL.h"

Конечно, я не могу изменить заголовок на это, потому что это не мой заголовок. Это происходит из внешней библиотеки, которую я вытащил.

Что я делаю?
Я не понимаю, почему я не могу добавить системные пути к коптам (возможно, из-за герметичности). Я не знаю, как включить пути и сделать их доступными в качестве системных заголовков. Я пробовал разные вещи с -isystem как хорошо, но видел те же ошибки.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]