如何有条件地在 bazel 中指定 C 编译器定义?
How to conditionally specify C compiler defines in bazel?
我正在尝试将 Makefile 构建转换为 bazel,并且需要重现以下条件以指定 CPU 为 C 代码编译定义的功能:
HAVE_AVX2 := $(shell grep avx2 /proc/cpuinfo)
ifdef HAVE_AVX2
$(info Checking for AVX support... AVX and AVX2)
CFLAGS += -DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_AVX2
else
HAVE_AVX := $(shell grep avx /proc/cpuinfo)
ifdef HAVE_AVX
$(info Checking for AVX support... AVX)
CFLAGS += -DRTE_MACHINE_CPUFLAG_AVX
else
$(info Checking for AVX support... no)
endif
endif
是否可以在 bazel 中实现这样的条件?根据我的发现,cc_library
有 defines
和 copts
,我可以在其中使用 select
函数,但我不明白我可以在 [= 内部使用什么样的条件14=].
看看https://docs.bazel.build/versions/master/be/general.html#config_setting。
一般来说,你会做类似的事情
config_setting(
name = "avx2",
values = {
"define": "avx2=yes"
}
)
并且您可以 select 在 :avx2
条件下:
cc_library(...
copts = select({":avx2":[...], ...})
和 运行 边框
bazel build --define avx2=yes ...
我正在尝试将 Makefile 构建转换为 bazel,并且需要重现以下条件以指定 CPU 为 C 代码编译定义的功能:
HAVE_AVX2 := $(shell grep avx2 /proc/cpuinfo)
ifdef HAVE_AVX2
$(info Checking for AVX support... AVX and AVX2)
CFLAGS += -DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_AVX2
else
HAVE_AVX := $(shell grep avx /proc/cpuinfo)
ifdef HAVE_AVX
$(info Checking for AVX support... AVX)
CFLAGS += -DRTE_MACHINE_CPUFLAG_AVX
else
$(info Checking for AVX support... no)
endif
endif
是否可以在 bazel 中实现这样的条件?根据我的发现,cc_library
有 defines
和 copts
,我可以在其中使用 select
函数,但我不明白我可以在 [= 内部使用什么样的条件14=].
看看https://docs.bazel.build/versions/master/be/general.html#config_setting。
一般来说,你会做类似的事情
config_setting(
name = "avx2",
values = {
"define": "avx2=yes"
}
)
并且您可以 select 在 :avx2
条件下:
cc_library(...
copts = select({":avx2":[...], ...})
和 运行 边框
bazel build --define avx2=yes ...