Build 如何在bazel中有条件地指定C编译器定义?

Build 如何在bazel中有条件地指定C编译器定义?,build,bazel,Build,Bazel,我正在尝试将Makefile build转换为bazel,需要重现以下条件,以指定为C代码编译定义的CPU功能: 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 := $(

我正在尝试将Makefile build转换为bazel,需要重现以下条件,以指定为C代码编译定义的CPU功能:

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_库
定义
copts
,我可以使用
select
函数,但我无法理解我可以在
select

中使用什么样的条件

一般来说,你会做这样的事情

config_setting(
    name = "avx2",
    values = {
        "define": "avx2=yes"
    }
)
您可以选择on
:avx2
条件:

cc_library(...
   copts = select({":avx2":[...], ...})
和巴泽尔一起跑

bazel build --define avx2=yes ...