You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

策略类设计:如何添加CMake选项以选择所需的目标策略类

实现方案

第一步:修改CMakeLists.txt添加配置选项

# 添加用户可选配置,默认关闭即使用RAM实现
option(BUILD_WITH_DISK_STORAGE "Use disk-backed memory implementation for simulation" OFF)

# 请将下方的simulation_target替换为你实际的编译目标名
add_executable(simulation_target your_source.cpp)

# 根据选项传递编译宏到代码
if(BUILD_WITH_DISK_STORAGE)
    target_compile_definitions(simulation_target PRIVATE USE_DISK_MEMORY_IMPL)
endif()

如果你的代码是作为第三方库供其他项目依赖,把上面的PRIVATE改成PUBLIC,确保依赖该库的目标也能拿到对应的宏定义。

第二步:修改C++代码添加策略别名

在你现有的memory命名空间中新增默认策略别名定义,原有on_RAM、on_disk的实现完全保留即可:

namespace memory
{
    // 原有策略类定义保留
    struct on_RAM { /* ... */ };
    struct on_disk { /* ... */ };

    // 根据编译宏自动选择默认策略
#if defined(USE_DISK_MEMORY_IMPL)
    using default_memory_policy = on_disk;
#else
    using default_memory_policy = on_RAM;
#endif
} // end namespace memory

第三步:替换硬编码的策略声明

把代码中所有写死的MyClass<memory::on_RAM>或者MyClass<memory::on_disk>全部替换为:

MyClass<memory::default_memory_policy> my_class_instance;

用户使用方式

用户不需要修改任何源码,只需要在编译时加参数即可切换实现:

  • 默认编译RAM版本:cmake .. && make
  • 指定编译磁盘版本:cmake .. -DBUILD_WITH_DISK_STORAGE=ON && make

内容的提问来源于stack exchange,提问作者WaterFox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:36:04