21

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

GNU Autogenは良さそうに見えますが、急な学習曲線が必要なようです。IDE のような Eclipse 用のプラグイン、使いやすく、最も重要なことに優れたチュートリアルが望ましいです。

4

5 に答える 5

15

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

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

お客様のニーズと使い慣れたツールについて詳しく知らなければ、これ以上具体的な推奨事項を提示することはできません。

私は、Eclipse プラグインを提供するものに精通していません。

于 2012-08-24T14:42:15.680 に答える
4

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

于 2012-08-24T14:48:45.173 に答える
1

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

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

于 2016-05-08T12:44:09.057 に答える
1

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

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

于 2015-02-04T03:57:26.940 に答える
1

Eclipse ベースの軽量テンプレート ジェネレーターである M2T-JET を使用するJava クラスに関する同様の質問に対する私の回答を参照してください。JET は言語にとらわれず、この例から非常に使いやすいことがわかります。

于 2012-08-25T03:23:31.703 に答える