web-dev-qa-db-ja.com

WindowsでClangを使用して64ビットのc ++ 14をビルドするには、何をインストールする必要がありますか?

更新:

この質問に関する上位2つの回答を組み込んだ詳細なチュートリアルを作成しました: http://blog.johannesmp.com/2015/09/01/installing-clang-on-windows-pt1/



TL; DR

Windowsでは、次のプログラムを考えます:

#include <iostream>

int main()
{
    int arr[] = {1, 2, 3, 4, 5};
    for(auto el : arr)
    {
        std::cout << el << std::endl;
    }
    return 0;
}

次のことができるようにしたい:

clang++ hello.cpp -o hello.exe -std=c++14

そして、だけが機能する64ビットの実行可能ファイルを取得しますiostreamまたはその他の標準c ++ヘッダーの場所をclangに指示するために、大量の-Iインクルードを追加する必要はありません。複数のステップでリンクする必要はありません。

パフォーマンス、効率、リンカの使用などについてはあまり気にしません。clang/ gcc/whateverを正しくセットアップして、単一の迅速で汚れたコンソールコマンドを使用できるようにしたいだけです。上記のもの。

ちょうど仕事にするには、何をインストールする必要がありますか?


問題

主にmac/linuxユーザーとして、パッケージマネージャーを使用して最新バージョンのclangをインストールできるようになりました(これはjust works)。

私は今、Windows上でclang/gnuコンパイラを設定しようとしていますが、それははるかに難しいようです、単純なドキュメントがほとんどまたはまったくないからです(私が見つけることができた)

私はこのチュートリアルに従うことを試みました: https://yongweiwu.wordpress.com/2014/12/24/installing-clang-3-5-for-windows -そして(gcc 4.8.2を使用して)clangを構築およびリンクするために使用できましたが、結果のバイナリは32ビットでした。

Clangの最新のビルド済みバイナリ( 3.6.2 )および64ビットバージョンのmingw-w64( 4.9.3 for 64)をインストールしようとしました例外のためのposixとsjljでビット )、取得しています:

hello.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^
1 error generated.

これは、clangがgccのファイルを参照していないことを示しているようです。 LLVM/clangのいくつかのバージョンはgccの特定のバージョンのみを探しているようですが、それはどこにも文書化されていないようです?

同様に、誰かがLLVMで私に言ったIRC特定のパスでgccを探すためにclangのドライバーを修正する必要があると?


私が探しているもの

必要に応じてソースからLLVM/Clangをビルドしても問題ありませんが、clang++をできるだけ簡単に使用できるようにする明確で段階的な手順を探しているだけです。 mac/linux

何かのようなもの:

  1. LLVM/Clangのthis versionをビルドし、that directoryに配置します
  2. Cygwinのthis version(またはmingw32またはmingw-w64)をダウンロードしてインストールし、these packagesをインストールします。
  3. 等..
45
Johannes

今後のclang 3.7.0を使用する場合、PATHにmingw-w64のビンを含めるように設定するだけで、clangは期待どおりに動作します

10
user5271266

MSYS2 をインストールしてから、mingw-w64-x86_64-clang(バイナリ)パッケージをインストールしてみてください。

pacman -S mingw-w64-x86_64-clang

現時点では少し古い(3.6.2)が、それで十分かもしれない。その後、MSYS2が提供するWin64シェルを実行すると、clangがパス上にあります。

十分でない場合は、最近、MSYS2で64ビットバージョンのclangを構築し、それを使用してネイティブの64ビットWindows実行可能ファイルをコンパイルしています。私のプロセスは次のようなものでした:

  1. Pacmanを使用して、base-devel、mingw-w64-x86_64-ninja、mingw-x86_64-cmake、およびおそらくビルドプロセスに必要な他のパッケージをインストールします。
  2. グラブ clangと同じディレクトリ内のファイル用のPKGBUILDスクリプト 。これは、MSYS2の mingw-w64-clang-svn パッケージに基づいています。これは、主にMartell Maloneの作業です。 MSYS2 IRCチャンネルで彼を見つけることができます。
  3. Win64のシェルで、PKGDUILDがあるディレクトリに移動し、export MINGW_INSTALLS=mingw64(64ビットバージョンのみをコンパイルしているため)、makepkg-mingw

最初の試行ですべてが正しくなる可能性は低く、一部のファイルを編集する必要がある場合があります。 Clangは前回行ったときから変更されている可能性があり、一部のパッチはきれいに適用されない可能性があります。

13
David Grayson

Windows用のllvmプレリリースバイナリをインストールできます here 。 MinGW-w64は こちら からダウンロードできます。もちろん、パスが適切に設定されていることを確認する必要があります。

Clangの最新バージョン(例:clang 6.0.0。 @ user5271266による上記の解決策では不十分です。 clang Windowsのデフォルトのターゲットはx86_64-pc-windows-msvc(64ビットWindowsを使用していると仮定します)。

C++ソースファイルをコンパイルするには、 here に従って、ターゲットを変更する必要があります。

clang++ -target x86_64-pc-windows-gnu -std=c++14 test.cc -o test.exe
1
jdhao