2017-03-27 7 views
2

私はVisual Studio 2017ビルドツール(x64システム上)のClang/C2コンパイラを使って簡単な「空のメイン」アプリケーションを構築しようとしています。私は...\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.batシェルを提案したように開始しましたが、clang.exeコンパイラへのパスを追加しないことに気づいたので、clangは利用できませんでした。パスを手動で追加しました(x64ホストバージョン)ので、clangも呼び出すことができます。しかし、それはそう、コマンドラインからVisual Studio 2017 Codegen ClangC2を使用するには?

clang hello.cc -o hello.exe 
error: failed to load c2 (file not found) 

c2.dllをリンクするためで引っ張ることになって打ち鳴らすMSリンカーである:次のエラーでの単純な空の主な機能は本体の結果とできるだけ簡単なプログラムを構築しようと

それを見つけることができません。

私はIDE自体から同じプログラムをビルドしようとしましたが、IDEが別々にコンパイラを呼び出し、リンカよりも明らかに成功しています(つまり、コンパイラがリンカを呼び出すのではなく、 .exe直接)

誰もがclang/c2コンパイラを動作する形にする方法を知っていますか?(以前私は、Visual Studio 2015と同じことを行うことができた)

答えて

1

問題はクランは、それがPATHにいるにもかかわらず、WindowsでLINK.EXEを見つけるには余りにも愚かであるということです。

溶液はMKLINKコマンドを使用して、clang.exe実行隣LINK.EXEへのシンボリックリンクを作成している:

cd "c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\ClangC2\14.10.25903\bin\HostX64" 
mklink link.exe "c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64\link.exe" 

cd "c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\ClangC2\14.10.25903\bin\HostX86" 
mklink link.exe "c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86\link.exe" 

上記溶液がハックされ、管理者特権を必要とするかもしれません、架橋剤が天然のものと適合性があると仮定する。

+0

確かに、clang/c2は、不自然なLink.exeを見つけるためにパスを使用しません。私はプロセスモニタを使ってこれを追跡しました。また、現在のディレクトリにlink.exeをコピーすることも可能ですが、これはさらに厄介です。先端に感謝します。 – Rudi

関連する問題