代码之家  ›  专栏  ›  技术社区  ›  James Durand

处理复杂和大型依赖项

  •  3
  • James Durand  · 技术社区  · 7 年前

    问题

    我在业余时间用C++开发了一个游戏,我选择了使用 Bazel make cmake . 我在其他语言中也有依赖关系( python glfw 对于基本的窗口处理和高级图形支持,这已经足够好了,但现在问题来了。我不确定该如何处理像这样的依赖关系 glfw公司 巴泽尔

    gtest fruit WORKSPACE 巴泽尔 自动处理,但 尚未采用 巴泽尔 . 所有这些让我不禁要问,对于不使用 巴泽尔 a内部 项目

    当前方法

    new_git_repository 进入我的 工作区 BUILD 库的文件。这非常有效,直到你接触到非常复杂的库,比如 glfw公司

    建造时 glfw公司 对于运行Linux的机器 X11 X11 这意味着增加 X11 巴泽尔 设置。 X11 X11 类库 X11Cursor )等等。

    glfw公司

    备选方案

    他们要去参加比赛了。这很好,因为这也意味着我可以创建一个 Docker 容器具有 巴泽尔 安装和制作CI/CD非常容易。

    我可以牺牲这种便利性,只需说你需要像 glfw公司 应该有助于解决。

    1 回复  |  直到 7 年前
        1
  •  2
  •   László    7 年前

    如果 glfw BUILD 文件,则您有以下选项:

    • 建筑 genrule .

      如果 glfw公司 make genrule公司 运行该工具。这种方法有明显的缺点,例如必须声明其所有输入是不可低估的不切实际 genrule公司 ,但这是最简单的集市化方式 glfw公司

    • glfw.o 并将其签入源代码树。

      您可以创建 cc_library 为其制定规则,并将 .o srcs . 尽管这个解决方案是最不灵活的,因为您不仅将目标平台限制在 .o

      我认为这是最后的手段。即使在Bazel自己的源代码中也有一个 cc_library.srcs that includes a raw object file 92caf38

    • glfw公司 安装。