Visual Studio 2012 で問題が発生しています。解決策があることを願っています。私のソリューションには 2 つのプロジェクトがあります。1 つのプロジェクトは「.exe」プロジェクトで、もう 1 つは「.lib」プロジェクトです。exe プロジェクトの参照として lib プロジェクトを追加し、最初にコンパイルされるようにスケジュールされていることを確認しました。lib プロジェクトには、多数の追加のインクルード ディレクトリと、多数の追加の依存関係とリンクされたライブラリがあります。lib プロジェクトは正常にコンパイルされます。ただし、追加のインクルード ディレクトリ、追加のライブラリ ディレクトリ、または依存関係はいずれも、exe アプリケーションによって継承されません。構成をexeプロジェクトにコピーすることでこれを解決できましたが、これは、libの依存関係を更新した場合、次に、このライブラリを使用するすべてのプロジェクトで更新する必要があります (このライブラリを複数のプロジェクトで使用するためにプレイします)。これは解決策があるべきもののように思えますが、私はそれを見つけることができないようです. プロジェクトに参照プロジェクトの構成を継承させる方法を誰かが見つけましたか、それともこれを回避する方法はありませんか? ありがとう。
1 に答える
そうです、プロジェクトは、参照する他のプロジェクトのプロパティを継承しません。問題を解決するために必要なのは、プロパティシートです。プロパティシートは、プロジェクトとは別のプロパティ(プロジェクトプロパティで設定したものなど)のコレクションです。1つのプロパティシートを多くのプロジェクトに適用できます。
あなたの場合、「追加のライブラリ依存関係」と「追加のインクルードディレクトリ」がプロパティシートに配置されます。そのプロパティシートは、.exe
プロジェクトとプロジェクトの両方に適用されます.lib
。変更を加えると、プロパティシートに変更が加えられ、両方のプロジェクトに変更が表示されます。
プロパティシートを設定して、必要な処理を実行していきましょう。
.exe
およびプロジェクトとともにソリューションファイルをロードします.lib
。ライブラリの名前がPowerMath.lib
で、メインの実行可能ファイルがであると仮定しますSuperCalc.exe
。- VisualStudioでソリューションエクスプローラーウィンドウを見つけます。これは、すべてのプロジェクトとそれらのプロジェクト内のファイルを一覧表示するサブウィンドウです。(お持ちでない場合は、[表示]メニューをクリックし、[ソリューションエクスプローラー]オプションを選択して作成してください。)
- まず、現在設定しているプロジェクトプロパティから設定を取り出しましょう。プロジェクトのプロジェクトプロパティに移動し
PowerMath.lib
ます(ソリューションエクスプローラーでそのプロジェクトを右クリックし、コンテキストメニューから[プロパティ]を選択します)。行った「追加のライブラリ依存関係」および「追加のインクルードディレクトリ」設定を見つけて、それらを削除します。(以前にあったものではなく、変更のみを削除します。)(また、内容を書き留めるか、どこかにコピーします。手順10で元に戻ります。)プロジェクトが完了したら、プロジェクトPowerMath.lib
でプロセスを繰り返します。SuperCalc.exe
。これから採用する新しいアプローチに干渉しないように、すべてを取り除いてください。プロジェクトのすべての構成(デバッグとリリース、 - ソリューションエクスプローラーウィンドウの下部に、ソリューションエクスプローラー、クラスビュー、プロパティマネージャーなどのいくつかのタブが表示されます。ウィンドウが小さい場合、これらは省略される場合があります。プロパティマネージャをクリックします。
PowerMath
プロパティマネージャには、とSuperCalc
プロジェクト名の2つのエントリが表示されます。PowerMath.lib
プロジェクトを右クリックし、メニューオプション[新しいプロパティシートの追加]を選択します。- ライブラリを参照する適切な名前を選択してください。私は提案し
PowerMath-settings.props
ます。次に、[追加]をクリックしてプロパティシートを作成し、それをPowerMath
.libプロジェクトに自動的に添付します。 - プロパティマネージャペインに戻ると、PowerMathの下にデバッグとリリースの2つの要素があることがわかります。これらは、ライブラリの2つの構成です。
PowerMath-settings
マウスでクリックして「開く」と、プロパティシートが両方の構成に添付されていることがわかります。 PowerMath-settings
プロパティシートは、とのような名前を持つ、すでに存在する他のプロパティシートの束の上に一覧表示さCore Windows Libraries
れますUnicode Support
。 プロジェクトの構成に含まれるすべての設定は、これらのプロパティシートを組み合わせたものです。これが、Visual Studio内でプロパティがどのように機能するかを示しています。つまり、プロジェクトのすべてのプロパティシートを、最初のシートが一番下にある順にまとめています。PowerMath-settings
リスト内のプロパティシートをダブルクリックします。これにより、おなじみのプロジェクトプロパティインターフェイスに移動します。ここで行った変更は、プロジェクトまたはそのプロジェクト内の特定の構成には適用されません。代わりに、プロパティシートの設定のみを記述していますPowerMath-settings.props
。- これで、追加のライブラリ依存関係と追加のインクルードディレクトリを作成できます。それらを設定する予定のダイアログボックスに移動します。適切なフィールドで、フィールドの右側にある小さな下向き矢印をクリックして、を選択し
Edit...
ます。 - 編集ボックスには、新しい設定を書き込むことができる空白のスペースが表示されます。(他のプロパティシートから取得した設定である「継承された値」も表示されます。)コンテンツを追加して、[OK]をクリックします。
- 完了すると、ライブラリ
PowerMath-settings.props
のすべてのユーザーに必要な設定を格納するというプロパティシートが作成されます。PowerMath.lib
- 次に、プロパティマネージャウィンドウに戻ります。代わりにプロジェクトを右クリックします
SuperCalc
(これは.exeです)。メニューオプション[既存のプロパティシートの追加]を選択します。それを見つけPowerMath-settings.props
て選択します。 - ブーム、今
SuperCalc.exe
作成したすべての設定を取得しますPowerMath.lib
。 - これを確認するには、プロパティマネージャーからソリューションエクスプローラーに切り替えます(サブウィンドウの下部にある[ソリューションエクスプローラー]タブをクリックします)。プロジェクトのプロジェクトプロパティに移動します
SuperCalc.exe
。「追加のインクルードディレクトリ」に移動します。そのフィールドの左側にある下向き矢印をクリックして、を選択しEdit...
ます。プロパティシートの設定が「継承された値」として一覧表示されていることがわかります。 - Visual Studioを終了し、再起動してソリューションを再ロードするまで、新しいプロパティシートの設定が適用されない場合があります。プロジェクトの変更と新しいプロパティシートを保存するかどうかを尋ねられたら、必ず[はい]をクリックしてください。すべての設定が完了したら、これを再度行う必要はありません。
これで、を使用する新しいプロジェクトがあるときはいつでもPowerMath.lib
、プロパティマネージャーに移動して既存のプロパティシートを追加するだけですPowerMath-settings.props
。
プロパティシートのプロパティに加えられたすべての変更は、プロジェクトプロパティを使用するのではなく、[プロパティマネージャ]ダイアログボックスを介して行う必要があることに注意してください。PowerMath.lib
プロジェクトプロパティは、1つの特定のプロジェクトにのみ適用される一種の「オーバーライド」プロパティシートです。それは、プロパティマネージャーによってリストされたすべてのプロパティシートの上に立っています。