我正在编写一个示例C ++项目,该项目使用Bazel作为其他合作者可以遵循的示例习惯。
以下是存储库:https://github.com/thinlizzy/bazelexample
我很想知道我是否正在做这件事,对此文件更具体:https://github.com/thinlizzy/bazelexample/blob/38cc07931e58ff5a888dd6a83456970f76d7e5b3/demo/BUILD 在选择特定的实现时。
cc_library(
name = "demo",
srcs = ["demo.cpp"],
deps = [
"//example:frontend",
],
)
cc_binary(
name = "main_win",
deps = [
":demo",
"//example:impl_win",
],
)
cc_binary(
name = "main_linux",
deps = [
":demo",
"//example:impl_linux",
],
)
这是否遵循Bazel项目的正确/预期的习惯用法?我已经为其他项目做了这种方式,通过将所有特定于平台的依赖关系集中在不同的目标中,然后二进制文件只依赖于它们。
在bazel讨论列表中有人告诉我使用选择,但我的尝试未能“检测到”'操作系统。我确定我做错了什么,但缺乏信息和示例并没有告诉我如何正确使用它。
答案 0 :(得分:14)
render() {
[...]
this.state.photo.map((singlePhoto) => (
<img src={singlePhoto.urls.small} />
))
[...]
包含预定义的平台条件:
@bazel_tools
您可以直接在$ bazel query @bazel_tools//src/conditions:all
@bazel_tools//src/conditions:windows_msys
@bazel_tools//src/conditions:windows_msvc
@bazel_tools//src/conditions:windows
@bazel_tools//src/conditions:remote
@bazel_tools//src/conditions:host_windows_msys
@bazel_tools//src/conditions:host_windows_msvc
@bazel_tools//src/conditions:host_windows
@bazel_tools//src/conditions:freebsd
@bazel_tools//src/conditions:darwin_x86_64
@bazel_tools//src/conditions:darwin
文件中使用它们:
BUILD
有关语法的详细信息,请参阅select
的文档。
答案 1 :(得分:0)
向您的项目添加.bazelrc
。添加行build:vs2019 --cxxopt=/std:c++14
和build:gcc --cxxopt=-std=c++14
。构建代码bazel build --config=msvc //...
或bazel build --config=gcc //....