我的工具集:
我需要使用预构建的第三方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?还是我可以为此提案使用其他任何规则?
答案 0 :(得分:2)
您可以使用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",
},
)