MinGW-64bit環境で[〜#〜] gcc [〜#〜]に加えてclangを使用したいWindows 7、どちらもgccの標準ライブラリを使用しています。 http://sourceforge.net/projects/mingwbuilds/ のgcc_x64_4.8.1_win32_seh_rev1とQtを使用しています。
私はこの環境でフラグなしでclang3.3をビルドしました(HAVE_EHTABLE_SUPPORT
コンパイルの問題を回避するだけです)。
私はqmakeビルドプロセスを使用しており、プロジェクトファイルにはclang用に次の行が追加されています(リリースモードのみ)。
QMAKE_CC = clang
QMAKE_CXX = clang++
QMAKE_CXXFLAGS_RELEASE += -Wno-ignored-attributes
QMAKE_CXXFLAGS_RELEASE += -I"C:/tc/gcc_x64_4.8.1_win32_seh_rev1/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.1"
QMAKE_CXXFLAGS_RELEASE += -I"C:/tc/gcc_x64_4.8.1_win32_seh_rev1/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++"
QMAKE_CXXFLAGS_RELEASE += -I"C:/tc/gcc_x64_4.8.1_win32_seh_rev1/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++/x86_64-w64-mingw32"
QMAKE_CXXFLAGS_RELEASE += -I"C:/tc/gcc_x64_4.8.1_win32_seh_rev1/mingw64/x86_64-w64-mingw32/include"
コンパイルは次のようになります。
C:/tc/gcc_x64_4.8.1_win32_seh_rev1/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++\bits/random.h:106:26: error:
__int128 is not supported on this target
{ typedef unsigned __int128 type; };
^
インターネットを検索すると_mingw.hが参照されましたが、何が問題なのかわかりません。
#if (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 1)) && \
!defined(__SIZEOF_INT128__) /* clang >= 3.1 has __int128 but no size macro */
#define __SIZEOF_INT128__ 16
#endif
このリンクを確認してください: https://web.archive.org/web/20140301212210/http://www.bencode.net/blog/2012/10/20/clangonwindows/
これは、Windows8およびMinGWで機能するClang ++ビルドを実行するためのインストール手順に関するチュートリアルです。 Windows8とWindows7は多くの共通点があり、このチュートリアルを使用してタスクを実行できます。
==================================================
MinGWをインストールします。 mingw-get-inst-20120426.exeを使用すると、事前にパッケージ化されたリポジトリカタログを使用できます。これは、執筆時点でClangがシームレスにサポートしていない4.7.xとは対照的に、GCC4.6.1にバンドルされています。 Cコンパイラ、C++コンパイラ、MSYS Basic System、およびMinGW Developer ToolkitMinGWパッケージが必要になります。
Python2.x。 Pythonインタプリタとライブラリをc:\ MinGW\binにインストールします。
Subversionをインストールします。 CollabNetのSubversion1.7.7(Windows 64ビット)パッケージを使用しました。
チェックアウトLLVM:
cd C:\ mingw\msys\1.0 mkdir src cd src svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
チェックアウトClang:
cd llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
cd ../..
チェックアウトコンパイラ-RT:
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
cd ../..
C++ヘッダーとライブラリ。 Clangは、サポートされているlibstdc ++パスのセットについてMinGWのディレクトリ構造を自動的にプローブしようとします。 32ビットのi686-w64-mingw32および64ビットのx86_64-w64-mingw32の場合、Clangは次のように想定します。
このプロービングロジックは、ここにあるInitHeaderSearch.cppにあります(これを書いている時点では374行目)。
ここC:\ mingw\lib\gcc\mingw32\4.6.2を見て、MinGWインストーラーが使用したgccのバージョンがサポートされているバージョンと一致していることを確認します(たとえば、4.6.2が私の場合)。
ご使用のバージョンのgccが自動的にサポートされていないように思われる場合は、Clangを使用して標準ライブラリとヘッダーを解決できます。これが必要です。 Clangがこれらを見つけるのを助けるいくつかの一般的な方法(まだ見つけていない場合):
ビルドします。 MinGWシェルの使用。このためのピートへのクレジット。
cd /src
mkdir build
cd build
export CC=gcc
export CXX=g++
../llvm/configure --disable-docs --enable-optimized --enable-targets=x86,x86_64 --prefix=/mingw
make
make install
オリジナル作品のクレジット: 投稿者Ben Simmonds 2012年10月20日