cc_import用于调试和发布版本?

问题描述 投票:0回答:1

我的工具集:

  • Windows 10 x64(1909)
  • Bazel 3.1.0
  • Visual Studio 2019(16.6)
  • Powershell

我需要使用预构建的第三方C ++ DLL。第三方库看起来像这样:

<directory> third-party-lib
├── <directory> bin
|   ├── <file> third_party_lib.dll
|   └── <file> third_party_libd.dll
├── <directory> lib
|   ├── <file> third_party_lib.lib
|   └── <file> third_party_libd.lib
└── <directory> includes
    └── <file> third_party_lib.h

因此有一个发行版和一个调试版两个版本。以“ d”结尾的文件名表示调试版本。

要使用此库,我正在使用cc_import目标:

cc_import(
    name = "third-party-lib",
    interface_library = "lib/third_party_lib.lib",
    shared_library = "bin/third_party_lib.dll",
)

我的构建目标取决于third-party-lib。在发布(opt)模式下构建可以正常工作:

bazel build //:MyBuildTarget

但是如果我尝试进行调试,则会遇到链接器问题:

bazel build --compilation_mode=dbg //:MyBuildTarget

是否有可能在cc_import规则中指定调试和发布DLL?还是我可以针对此提议使用其他任何规则?

dll bazel
1个回答
0
投票

您可以使用select()在库变体之间切换:

cc_import(
    name = "third-party-lib",
    interface_library = "lib/third_party_lib.lib",
    shared_library = select({
        ":debug_build": "third_party_libd.dll",
        "//conditions:default": "third_party_lib.dll",
    }),
)

config_setting(
    name = "debug_build",
    values = {
        "compilation_mode": "dbg",
    },
)

© www.soinside.com 2019 - 2024. All rights reserved.