web-dev-qa-db-ja.com

Visual C ++ 2010の静的ライブラリプロジェクトで警告MSB8012を修正するにはどうすればよいですか?

静的ライブラリをVC++ 2008からVC++ 2010に変換しようとしていますが、TargetPathとTargetNameに関するこれらの警告が表示されます。私は自分の構成を調べましたが、これらをなくす方法がわかりません。私が通常一度構築し、めったに再構築しない静的ライブラリにとって、それは深刻なのか、それとも本当に無視できる警告なのか。

プロジェクトの名前がitk32であるという事実と関係があると思いますが、ライブラリのデバッグバージョンの名前はitk32d.libであり、これがVisual C++ 6.0時代に構成されていた古い方法では、ある種の奇妙な結果になりました。少し前にVC6から2008に変換されたvc2010プロジェクトに残っている設定で、現在2010に変換しています。

1>------ Build started: Project: Itk32, Configuration: Debug Win32 ------
1>...\Microsoft.CppBuild.targets(1151,5): warning MSB8012: TargetPath(C:\...\Libraries\Itk\.\Debug\Itk32d.lib.lib) does not match the Library's OutputFile property value (C:\...\Libraries\Itk\Debug\Itk32d.lib). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Lib.OutputFile).
1>...\Microsoft.CppBuild.targets(1153,5): warning MSB8012: TargetName(Itk32d.lib) does not match the Library's OutputFile property value (Itk32d). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Lib.OutputFile).
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
14
Warren P

ビルドシステムはVS2010で大幅に見直され、カスタムVCBuildシステムの代わりにMSBuildを使用するようになりました。 VSでサポートされている他の言語で使用されているものと同じビルドシステム。彼らは、目に見えない古いプロジェクトを通常はうまく構築するというかなり良い仕事をしました。ただし、古いプロジェクトをインポートするときに問題が発生する可能性のある場所がいくつかあります。これがこの警告が言っていることです。

リンカの[一般] + [出力ファイル]設定を使用して出力ファイルに名前を付けることは、そのような問題の1つです。何がうまくいかないかは実際にはわかりませんが、おそらく依存関係のチェックと関係があります。デフォルト設定は$(OutDir)$(TargetName)$(TargetExt)です。したがって、出力ファイルの名前を変更する最良の方法は、$(TargetName)マクロ値を変更することです。

これは、メインの[一般]ページで[ターゲット名]設定として使用できます。以前のVSバージョンには存在しませんでした。したがって、これを「itk32d」に変更します。または、$(ProjectName)d。そして、リンカー設定をリセットします。

23
Hans Passant

私はこの問題を抱えていましたが、ここSOで有効な答えを見つけることができませんでした。最終的に、中間ディレクトリを「。\ Debug」から「..\Debug」に修正することで解決されたことがわかりました。各ビルド構成で「。\ Release」から「..\Release」へ。

申し訳ありませんが、これはコメントの価値があるだけですが、他の人の投稿にコメントを追加するのに十分なポイントがありません。

0
blit