0

I have read the question, but unfortunately the proposed solutions are to change source code of header files location, which on this case it's not possible.

Let's imagine I have the following structure of system includes from an installed package:

/usr/local/bar/bar1.h
/usr/local/bar/bar2.h

And

/usr/include/foo.h

Important detail:

  • bar1.h includes foo.h
  • foo.h includes bar2.h

From Bazel, I would right away create a new_git_repository() from /usr/local/bar and then create a library containing the header files from this folder as:

cc_library(
  name = "libBar",
  hrds = ["bar1.h", "bar2.h"],
  deps = ["@foo//:libFoo"],
)

I would do another new_git_repository() from /usr/include/ and create a library:

cc_library(
  name = "libFoo",
  hrds = ["foo.h"],
  deps = ["@bar//:libBar"],
)

As seen, this will end up in a compilation error from Bazel regarding cyclic dependencies: libBar is dependent of libFoo, and libFoo is dependend of libBar.

Or course a solution would be to separate the libBar into some libBar1 and libBar2. But I would want to avoid this solution as the folder /usr/local/bar contains too many header files and separating this will be a nightmare.

Is there a proper solution for this case?

waas1919
  • 2,031
  • 6
  • 39
  • 68

0 Answers0