web-dev-qa-db-ja.com

テンプレートベースのC / C ++コード生成

特に反復的なコード生成を生成するためのC/C++用のテンプレートベースコードジェネレーターに対する提案はありますか? (UML/MATLABモデルベースまたはその他の高度なものではありません)。この分野の初心者にとって、優れた一般的なチュートリアル(ツールベースではない)はありますか?

私は偶然出会った GNU Autogen 良さそうに見えますが、急な学習曲線が必要なようです。 IDEのようなEclipseのプラグイン、使いやすく、最も重要な優れたチュートリアルが好きです。

21
Kamath

コード生成の基本的な概念は非常に単純であり、人々のニーズは十分に多様であるため、そこにはかなりの数のオプションがあります。

  • Boost.Preprocessor は、標準のC/C++プリプロセッサの上に構築された関数のライブラリで、プリプロセッサを使用してコード生成をはるかに簡単に行うことができます。これは他のオプションほど柔軟性がなく、プリプロセッサエラーを理解するのは難しい場合がありますが、標準の言語機能のみを使用するという事実により、その使用とビルドへの統合が大幅に簡略化されます。
  • あなたがPythonを知っているなら、 Cog があります。
  • Googleのプロジェクトの一部では Pump を使用しています。
  • 多くの汎用テンプレート作成ソリューションがあります(Pythonの GenshieRuby など)。これらは多くの場合、HTMLおよびXMLを生成するために設計されていますが、コードに対しても機能します。
  • また、選択したスクリプト言語で何かをハッキングするのも簡単です。

あなたのニーズが何であるか、そしてあなたが快適に使えるツールについてもっと知らなければ、私はより具体的な推奨を与えることはできません。

私はEclipseプラグインを提供するものについて何も知りません。

13
Josh Kelley

Pythonを知っている場合、Cogは軽量のソリューションと見なすことができます。 http://www.python.org/about/success/cog/

3
Rost

Templet のようなもの、または無数のLuaベースのプリプロセッサの1つを使用して、このタスクにLuaを使用することに感謝します。 PythonのようなものよりもLuaを使用する利点は、必要に応じて、テンプレートプロセッサのソースコードと基本的なLuaインストールを、出荷するものと一緒に含めることができることです。次に、通常どおり、Luaのコンパイルとそれに続くテンプレートファイルをビルドプロセスに追加します。

1つの理由で、Pythonベースのソリューションを使用しないことをお勧めします。完全に異なるが互換性のないバージョンのすべての開発者の使用を満たすために、さまざまなpythonをジャグリングするのは面倒です。ツリーに埋め込めない言語を使用する場合は、事前に計算されたバージョンが利用可能であることを確認する必要があります。

2
Skrylar

Eclipseベースの軽量テンプレート生成ジェネレーターであるM2T-JETを使用した Javaクラス の同様の質問に対する私の回答を見てください。 JETは言語にとらわれないため、かなり簡単に使用できることが例からわかります。

1
Chris Gerken

パーティーに遅れますが、私はお勧めします Codeworker 上記のツールなどすべてを実行できる唯一のツールです。 Python埋め込み生成用のCogのような機能があり、TempletやPumpのようなテンプレートベースの生成があります。保護された領域というかなり便利な機能があり、必要に応じてコードをカスタマイズできます。再生成します。

ボイラープレートのすべてのc ++コードの生成や、SQL、config、javascriptなどのプロジェクトの構成に使用しました。

0
Delta_Fore