Newer
Older
TIASShot / docs / 02_ENV / ENV_06_ビルド構成とビルドフラグ.md

ビルド構成とビルドフラグ (Build Configurations and Flags)

本プロジェクトは,診断・評価用の機能(メモリ観測・白板撮影・リーク再現)を**条件コンパイルシンボル(ビルドフラグ)**で出し分けている.配布版(Release)にはこれらをコードごと含めない方針である.本ドキュメントは,どのフラグが何を有効化し,どの構成で定義されるかをまとめる.

設計方針 (Policy)

  • Release(配布版)=素の製品.診断・評価・デモ用の機能はコードごと除外する.
  • Debug=開発・検証版.診断/評価機能(MEMMONITORWHITEBOARD)を自動で含める.
  • 一部のデモ用フラグ(LEAKY_REPRO)は既定では未定義とし,必要なときだけ手動で付与して対比計測に使う.

ソリューション構成 (Solution Configurations)

TIASshot.sln が定義する構成は次の 2 つ(プラットフォームは x64 のみ).OpenCvSharp 等がネイティブ DLL に依存するため x64 でビルドする.

構成用途定義されるシンボル出力先
Debug\|x64開発・検証DEBUG TRACE WHITEBOARD MEMMONITORTIASshot/bin/x64/Debug/
Release\|x64配布TRACETIASshot/bin/x64/Release/

TIASshot.csproj には Debug\|AnyCPU / Release\|AnyCPU の PropertyGroup も残っているが,.slnx64 のみをビルド対象としており,通常はこれらを使わない. ※ TIASshot/bin/Debug-NoWB/ というフォルダが残っている場合があるが,これは WHITEBOARD フラグ導入前の古い手動ビルドの残骸であり,現在のソリューションには対応する構成は存在しない.

ビルドフラグ一覧 (Build Flags)

シンボル目的定義される構成Release(配布)含有出し分け対象(主なもの)
MEMMONITORメモリ観測ウィンドウ+プレビュー計測Debug\|x64(自動)UI/MemoryMonitorFormUI/PreviewProfilerUI/TimedPictureBoxUI/Form1.MemMonitor(F9 トグル),Form1.ShowImage 等のプレビュー計測
WHITEBOARD白板撮影モード(照明均一性評価用)Debug\|x64(自動)白板撮影ボタン(Form1 の専用 partial),Cameras/IScam.ShotWhiteBoard
LEAKY_REPROメモリ修正(優先度2)前の挙動を再現するデモ用どの構成でも未定義(手動オプトイン)ColorCorrection/ColorCorrector.ConvertImage のリーク版分岐,UI/MemoryMonitorForm のモード表示
DEBUG.NET 標準デバッグシンボルDebug\|x64標準(一部の開発時分岐)
TRACE.NET 標準トレースシンボル全構成System.Diagnostics.Trace

MEMMONITOR — メモリ観測・プレビュー計測

  • 起動時にメモリ観測ウィンドウ(MemoryMonitorForm)を自動で開き,PrivateMemory / WorkingSet をライブ折れ線グラフ+CSV で記録する.
  • プレビュー経路の計測(各段の実効 FPS・コピー時間・描画時間・GDI/USER/ハンドル数・画像サイズ・校正/撮影/F9 のイベント)を CSV(bin/x64/Debug/MemMonitor_Results/)に出力する.
  • 副モニタ表示を実行中に切り替える計測用ホットキー F9 も本フラグ限定で有効.
  • 配布版には不要なため Release では未定義.

WHITEBOARD — 白板撮影モード

  • SmTIAS との装置間比較(照明均一性評価)用に,校正・色補正を行わず素の RGB を保存する独立撮影パスを追加する.
  • ImagingSource(IScam)でのみ実装.未対応カメラでは通知して何もしない.
  • 配布版の舌診撮影フローには不要なため Release では未定義.

LEAKY_REPRO — リーク再現(対比計測デモ用)

  • メモリ修正(PLAN_02 優先度2=ConvertImage の中間 Mat 未解放)の修正前の挙動を忠実に再現するためのデモ用フラグ.
  • 既定(未定義)では入れ子 using による修正後実装が使われる.LEAKY_REPRO を定義してビルドすると,ConvertImage が中間 Mat を Dispose しないリーク版に切り替わり,観測ウィンドウのモード表示も「リーク再現(修正前)」になる.
  • 「修正前→修正後」をメモリ観測で対比録画するときにのみ使う.どの標準構成にも含めないため,使うときは手動で付与する(下記).

ビルド方法 (How to Build)

配布版(Release)

Visual Studio で構成 Release・プラットフォーム x64 を選択してビルドする.MEMMONITOR / WHITEBOARD / LEAKY_REPRO はいずれも含まれない.

開発・検証版(Debug)

構成 Debug・プラットフォーム x64 を選択してビルドする.WHITEBOARDMEMMONITOR が自動で有効になる(メモリ観測ウィンドウが開き,白板撮影ボタンが表示される).

LEAKY_REPRO を有効にする(対比計測デモ時のみ)

LEAKY_REPRO はソリューション構成に含まれないため,一時的に手動で付与する.いずれかの方法で行い,計測後は元に戻すこと.

  • Visual Studio: プロジェクトのプロパティ →[ビルド]→ 条件付きコンパイル シンボル に LEAKY_REPRO を追加してビルド.
  • または TIASshot.csprojDebug|x64<DefineConstants> に一時的に ;LEAKY_REPRO を追記してビルド.