2009-06-09 11 views
1

私はVS2008 C#アドインを作成して、C++プロジェクトでAspectC++を自動化しています。私はC++のソースファイルを作成していますが、ビルド前の段階でコンパイルする方法はわかりません。 IDTExtensibility2、EnvDTE90、またはVslangProj90名前空間内に新しいソースを指定する便利な方法はありますか?私はVCProjectとVCProjectEngineインターフェイスを使用して、 'ExcludedFromBuild = false'フラグを使ってプログラムにインクルードするファイルをマークしてみました。運がない。方法:生成されたC++ソースファイルをコンパイルしますか?

市販のAspectC++アドインがcl.exeをバイパスし、その中にラッパーとaC++ .exeのアスペクトコンパイラを置くことに気付きました。したがって、実際のコンパイラ用に生成されたソースファイルを準備する前に、ac.exe。exeを呼び出す独自のcl.exeを呼び出す必要があります。それは私にとってはハックのようですが、良い方法はありませんか?私は本当にこの1つに困っています、どんな助けも高く評価されます。

+0

湖、この頃はこのプロジェクトを終えているかもしれません。フリーズやオープンソースなら、このアドインを私にくれますか?ビジュアルスタジオでAspectC++を使用して、純粋な埋め込みCプロジェクトをトレースする必要があります。あなたのアドインは私を大きく助けるかもしれません。ありがとう。 – arefinsami

答えて

1

生成したファイルを、作成したプロジェクトに含めるだけではどうですか?

+0

私はそれを手動で行うと動作しますが、Pre-Buildイベントでは動作しません。私が知る限り、ファイルがプロジェクトに確実に含まれるようにするには、 'ExcludedFromBuild = false'メソッドだけが必要です。 VCProjectインターフェイスの.AddFile()関数は、生成されたファイルが実際にプロジェクトの一部であることを示しますが、何らかの理由でコンパイルされません。私は、コンパイルするファイルがPre-Buildのステップの前に決定されていると思っています... – Lake

+0

実際にいくつかのテストを行いました。私はそれらを組み込みコンパイルしました...それはまだハックですが... – Lake

+0

明快にするために、 VCProjectとProjectのインターフェイスが必ずしも等しいとは限りません。 Project(またはProjectItemではなく)インターフェイスでは、ビルドからアイテムを除外できますが、一般にVCProjectはそうしません。これはバグかもしれません。また、複数のプラットフォームを使用している場合、ActiveConfigurationは役に立ちません(プラットフォームではなく設定名のみ)ので、これを他の方法で指定する必要があります。そうしないと、間違った設定からアイテムを除外します。 – Lake

関連する問題