【发布时间】:2021-05-27 09:51:57
【问题描述】:
我正在尝试使用 Bazel 中的代码,该代码使用 -include 标志 (https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html) 始终包含配置标头。
配置头设置了一些头文件需要的#defines,即启用/禁用某些API。
配置头看起来像这样:
#ifndef CONFIG_H_
#define CONFIG_H_
// part of library, defines some stuff to use in this file
#include "config_defs.h"
<#define several config settings>
// also part of library, has a defaults via `#ifndef`->`#define`
#include "config_defaults.h"
#endif // CONFIG_H_
很遗憾,不能将该标题添加到每个文件中。
由于设置的数量,我想避免将完整的配置和所有默认值转换为-D(即通过defines = [...])。
从外观上看,配置需要以CcToolchainConfigInfo.includes (https://docs.bazel.build/versions/master/cc-toolchain-config-reference.html#cctoolchainconfiginfo-build-variables) 结尾,但我不知道如何到达那里。
我尝试在工具链中添加-include(通过功能标志),但不知道如何告诉它挂载文件。
【问题讨论】:
-
我设法通过制作自定义工具链(在功能标志中带有
-include)并将其添加到cc_toolchain中的相关文件组中来集成它。仍远未达到最佳状态,但有效... -
找到另一种方式 - 我现在使用
genrule在每个 .h/.c 文件的开头包含配置头。