Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

C#連携:メタ・デシリアライザ開発 #46

Open
yossi-tahara opened this issue Jul 22, 2018 · 0 comments

Comments

@yossi-tahara
Copy link
Owner

commented Jul 22, 2018

先月末からメタ・デシリアライザに着手しています。(他業務が忙しくなかなか進みませんが、じわじわとは進めています。)

メタ・デシリアライザは、メタ・シリアライザ・データを読み込んでC#プログラムのソース・コード(クラス定義やenum定義、および、それらのデータを交換するために必要な各種定義)を自動生成するものです。
C#にはソース・コード自動生成にも使えるT4テキスト・テンプレートという機能があります。C++のマクロを超強力にした感じのツールです。(マクロ展開中にif文やfor文を記述して展開処理を制御できる。)
これを使うと、比較的お手軽に各種定義を出力できそうです。

CMakeの限界

メタ・デシリアライザ用のプロジェクト・ファイルもCMakeで自動生成しようとしていたのですが、CMakeは T4テキスト・テンプレートに対応していませんでした。また、ヒョイッと対応できるほど簡単ではないです。(たぶん1~2週間かければ対応できるでしょうけど、需要はあまりなさそう)
そこで、手で作った(CMakeで生成後、手動でT4テキストテンプレート生成)プロジェクト・ファイルを雛形とし、CMakeのconfigure_fileで必要なパラメータ(各フォルダのパス等)を埋め、include_external_msprojectでプロジェクトへ取り込むことにしました。

メタ・デシリアライザはTheolizerのC#側のTheolizerドライバ的な位置づけのプログラムですので、一般のユーザさんが修正するものではないですし、そもそもVisual Studio限定ですので問題はないと思います。

yossi-tahara added a commit that referenced this issue Jul 22, 2018

T4テキスト・テンプレートへのパラメータ引き渡し成功 Issue #46
------ auto generated message by Theolizer
TheolizerDriver  : 133dbf324ec5803600f60667b187ce28
TheolizerLibrary : f6256350d4e371e244fae66bede2e4e7
Library's Header : d41d8cd98f00b204e9800998ecf8427e
------ end of message
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.