标题很难描述我想要实现的目标。
我有一个跨平台的代码库,由不同的开发人员在不同的平台上编译,核心的相互代码库在源代码控制中维护在一个地方。
在这个代码库中,我有一个名为 的类Config
,它定义了几个配置参数,static const fields
如下所示:
struct Config
{
static const bool ConfigParamA = true;
static const int ConfigParamB = 2;
// etc.
}
我在整个代码库中使用这些参数。
我想要的是让在不同平台(iOS、Android、Windows)上使用代码库的开发人员能够根据他们的需要自定义这些配置参数。
最简单的解决方案是让他们在他们的环境中简单地编辑这个头文件,但是这样他们每次将新版本的代码库从源代码控制复制到他们的环境时都必须编辑这个头文件,我想要避免。
另一种方法是Config
为每个平台简单地定义多个版本的字段,如下所示:
struct Config
{
#ifdef WINDOWS
static const bool ConfigParamA = true;
// etc.
#endif
#ifdef ANDROID
static const bool ConfigParamA = false;
// etc.
#endif
// etc.
}
但这会污染平台特定的核心代码库#ifdefs
,我试图尽可能避免这种情况。
我还考虑过将字段更改为虚函数,并从每个平台上的 Config 类继承并覆盖这些函数。但是,我不想为原始配置参数这样简单的事情介绍虚拟调用的成本。
那么有没有更简单的方法可以让“客户端”能够自定义“库”的一些配置参数而无需编辑代码库?