代码之家  ›  专栏  ›  技术社区  ›  Slava

bazel中的平台相关链接器标志(用于glut)

  •  2
  • Slava  · 技术社区  · 7 年前

    "-framework OpenGL", "-framework GLUT" 到链接器标志,而在linux上,我可能应该这样做 cc_library( name = "glut", srcs = glob(["local/lib/libglut*.dylib", "lib/libglut*.so"]), ... 在过量建造中。 所以问题是

    2 回复  |  直到 7 年前
        1
  •  3
  •   zlalanne    7 年前

    您可以使用Bazel来完成此操作 select() 作用类似的方法可能会奏效:

    config_setting(
        name = "linux_x86_64",
        values = {"cpu": "k8"},
        visibility = ["//visibility:public"],
    )
    
    config_setting(
        name = "darwin_x86_64",
        values = {"cpu": "darwin_x86_64"},
        visibility = ["//visibility:public"],
    )
    
    cc_library(
        name = "glut",
        srcs = select({
            ":darwin_x86_64": [],
            ":linux_x86_64": glob(["local/lib/libglut*.dylib", "lib/libglut*.so"]),
        }),
        linkopts = select({
            ":darwin_x86_64": [
                "-framework OpenGL",
                 "-framework GLUT"
            ],
            ":linux_x86_64": [],
        })
        ...
    )
    

    深入了解Bazel github存储库,它有一些很好的使用select()的真实示例。

        2
  •  3
  •   Clearer    7 年前

    config_setting (
      name = "darwin",
      constraint_values = [ "@bazel_tools//platforms:osx" ]
    )
    
    config_setting (
      name = "windows",
      constraint_values = [ "@bazel_tools//platforms:windows" ]
    
    )
    

    我不需要 linux ,但将其添加到 BUILD 文件应起作用:

    config_setting (
      name = "linux",
      constraint_values = [ "@bazel_tools//platforms:linux" ]
    )
    

    ":darwin" , ":windows" ":linux" select 你应该有一个可行的解决方案。