首页 > 解决方案 > 是否可以针对 bazel 中的当前编译器定义 CXXFLAGS?

问题描述

我正在尝试将 Make 项目转换为 Bazel。目前,makefile 检测正在使用的编译器并相应地设置某些 CXXFLAGS(并非所有标志都被所有编译器理解)。

例如:

ifeq ($(shell $(CC) -dM -E -x c++ /dev/null | grep __clang__),)
CXXFLAGS=-DUSE_GCC
else
CXXFLAGS=-DUSE_CLANG
endif

(编译器版本的代码类似。)

我怎样才能在 bazel 中实现这一点?编译器和要使用的标志之间的关系应该在项目中的某个地方定义(而不是在命令行上)。

我知道 --define 选项,但有没有办法直接将配置与正在使用的编译器相关联?

标签: bazel

解决方案


copts在 cc_library 或 cc_binary 中使用参数将设置编译器标志。

https://docs.bazel.build/versions/master/be/c-cpp.html#cc_binary_args


推荐阅读