エラーの原因を知りたいのではなく、エラーの原因を調べるための方法に関して質問しています。文章を正しく読解してください。
Visual Studio Professional 2017 ビルドエラーの原因を調べたい
MSB3721 は説明のないエラーです。単に「発行されたコマンドが失敗した」という意味で、理由は示されません。そこで、コマンドプロンプトまたは PowerShell コンソールから、失敗したコマンドをコマンドライン形式で再発行したいのですが、方法が分かりません。もし情報あれば教えてください。
-
-
gekka 9,666 評価のポイント MVP
2024-10-16T09:30:08.9133333+00:00 なんでCUDAのバージョンを隠しているのかわかりませんが、
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA xxx.targets 799
に書かれているtargetsファイルの799行目で、どのタスクが何をやっているか調べる必要があります。
バージョン隠されているのではっきりしませんが、おそらくCudaBuildとCudaBuildCoreタスクだろうと推測して。
VisualStudioから呼び出した開発者用コマンドプロンプトをプロジェクトのあるディレクトリをカレントにして以下のコマンドで実行してやれば、そのタスクをビルドできると思う。msbuild -property:Configuration=Release -property:Platform=X64 -target:Clean;CudaBuild;CudaBuildCore -verbosity:diag
タスク名が判らないなら、targetをRebuildにして、そのnvcc.exeを実行しているタスク名を調べてください。
msbuild -property:Configuration=Release -property:Platform=X64 -target;Rebuild -verbosity:diag
それよりも、C++のプロジェクトファイルにであるvcxprojを書き換えて、
CudaCompile.AdditionalOptions
にverboseを追加してビルドしたほうが簡単だと思う。<?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <!-- 省略 --> <ItemGroup> <CudaCompile Include="CUDATest.cu"> <FileType>Document</FileType> <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Platform)'=='x64'">false</ExcludedFromBuild> <AdditionalOptions>--verbose</AdditionalOptions> <!-- こいつでnvcc.exeのコマンドラインにパラメーターを追加してやる --> </CudaCompile> </ItemGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> <Import Project="$(ProgramFiles) (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 12.6.targets" /> </ImportGroup> </Project>
-
Raina Zhao - MSFT 2,855 評価のポイント Microsoft ベンダー
2024-10-16T10:03:50.7133333+00:00 aj-8521さん、こんにちは。
Microsoft Q&A フォーラムにご投稿くださいましてありがとうございます。
おっしゃる通り、このエラーは単に「コマンドが失敗した」ということを表示し、詳しい情報はありません。
エラーの原因を突き止めるには、まずエラーコードの詳細を調べる必要があります。
MSB3721: コマンド "command" がエラー コード "error-code" で終了しましたをご参照ください。
このエラーは、ビルド プロセスで起動されたコマンドが 0 以外のエラー コードで終了した場合に発生します。
エラー情報を把握した上で、コード1の意味や終了の原因について調査する必要があります。
上記のドキュメントに、トラブルシューティングの手順が記載されてあります:
Visual Studio では、[ツール]>[オプション]、[プロジェクトおよびソリューション]、[ビルドして実行] で詳細を変更できます。
[ツール]>[オプション]>[プロジェクトおよびソリューション]>[ビルドして実行] で「MSBuildプロジェクトビルドの出力の詳細」から「詳細」を選んでプロジェクトをリビルドしてください。VSの出力ウィンドウに詳しい情報が表示されます。
また、MSB3721はMSBuildエラーで、ビルドプロセスに関連しています。そのため、ビルドプロセスを確認する必要があります。具体的には、プロジェクトの設定、使用されているツールキット、参照パッケージ、含まれているファイル、コードなどを確認してください。
上記のいずれにも心当たりがない場合、上記のドキュメントを参照し、発生原因を絞って調べてみてください。
一方、CMD/PSでもコマンドを再発行してみますね。「Developer Command Prompt for Visual Studio Professional 2017」を試したことがありますか。「Developer Command Prompt for Visual Studio Professional 2017」で、「ビルド」コマンド(MSBuild コマンド ライン リファレンス)を実行すると、同じ結果が出る可能性があります。
どうぞよろしくお願いいたします。
役に立った回答には「回答を受け入れる」と「いいね!」を押してください。さらに質問がある場合は、「コメント」を追加してください。注意:Q&Aからメール通知を受け取りたい場合には、ドキュメントの手順に基づき、メール通知を有効にしてください。