Skip to content

[P3] 宣言的CMake関数 ccbench_add_protocol() を導入する #32

Description

@thawk105

親イシュー: #29
依存: #30 (P0) ✅ 解消済み(2026-05-13 #39 でClose)

概要

現在各プロトコルの CMakeLists.txt は数百行に及び、add_definitions(...) (非推奨)が合計182箇所、file(GLOB) によるソース列挙、プロトコル固有の if/else ブロックなどが散在している。ccbench_add_protocol() 関数を導入することで、各プロトコルのCMake記述を数行になる。

やること

  • cmake/ProtocolHelpers.cmakeccbench_add_protocol() 関数を定義する
# 使用例
ccbench_add_protocol(silo
  SOURCES silo.cc transaction.cc
  WORKLOADS ycsb tpcc bomb sbomb
  OPTIONS WAL=0 BACK_OFF=1
)
  • 関数内部で add_executabletarget_link_libraries(... ccbench_common)target_compile_definitions を自動生成する
  • cmake/Options.cmake を作成し、CCBENCH_KEY_SIZECCBENCH_BACK_OFF 等の共通オプションを集約する(現在の182箇所の add_definitions(...) を置き換える)
  • target_compile_definitions(... PRIVATE ...) への移行(ディレクトリスコープからターゲットスコープへ)
  • 全10プロトコルの CMakeLists.txt を新関数で書き直す
  • プロトコル×ワークロードの対応表を ccbench_add_protocol() の定義から自動生成できるようにする(README.md / CLAUDE.md の手動同期を容易にする)

完了条件

  • 各プロトコルの CMakeLists.txt が10〜20行程度になること
  • add_definitions(...) が0箇所になること
  • 全プロトコルのビルドが通ること
  • CI が通ること

備考

  • P2(per-protocolボイラープレート統合)およびP5(プロトコルジェネレータ)の前提となるタスク

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions