2015-09-11 17 views
13

Windows 7にQt Creatorをインストールしました。LLVM & Clangもインストールされています。 CMakeはすでにインストールされていました。その後、コンパイラとしてClangを追加しました。 ツール - >オプション - >ビルド&実行 - >コンパイラWindows上でQt Creatorを使用してClangをコンパイラとして使用するには?

次にClangキットを作成しました。しかし、新しいプロジェクト(単純なコンソールアプリケーション)を作成する間、私はClangキットを選択する能力がありません。自動検出されたMSVCキットのみがあります。

おそらく問題は、Clangキットの「Qtバージョン」が空であることです。しかし、それのためにqmakeを得るためにどこですか?

答えて

10

また、適切にコンパイルされたQtライブラリがClangにある必要があります。ダウンロードページにはWindows版QtのClangビルドはありません。したがって、マシン上のビルド環境を準備し、Qtソースをコンパイルしてから、キットの "Qtバージョン"フィールドにqmakeバイナリパスを割り当てる必要があります。または、ダウンロードページにQtバイナリビルドがすでに存在する別のコンパイラを使用するだけです。

+1

私が理解しているように、Clangは当時のC++のための最良のクロスプラットフォームコンパイラですので、私はそれを使いたいと思います。ソースまたは一部の特定の部分からQt全体をコンパイルすることを意味しますか?プロセスのいくつかの文書があるかもしれませんか? –

+0

あなたはコア、ウィジェットなど、使用したいモジュールを少なくともコンパイルする必要があります.WindowsでClangを使ってQtをコンパイルするときに、VSとMinGWコンパイラだけがあると言われることが多いのでサポートされており、Windowsのドキュメントでテストされています。http://doc.qt.io/qt-5/windows-requirements.html#sdks-and-compilers – Nejat

+0

@Nejatでは、以下の手順で少し具体的にすることができます:* 1)あなたのマシン上でビルド環境を準備し、* 2)Qtソースをコンパイルし、* 3)あなたのキットの "Qtバージョン"フィールドにqmakeバイナリパスを割り当てます。 – cross

4

現在、Qtにはwin32-clang-msvcというmkspecが付属しています。 clang-clを使用して、ビジュアルスタジオコンパイラと一緒に動作するビルド出力を生成します。

最新の32ビットLLVM/Clang 5.0ツールチェーンをインストールした後、Qt Creatorが自動的にC++コンパイラ「LLVM 32bit for MSVC2015」として検出されました。 Qtバージョン「Qt 5.9.2 MSVC2015 32bit」が私のシステムにインストールされています。これは同じアーキテクチャとMSVCバージョンを使用しています。

win32-clang-msvc mkspecを使用するには、キット「Desktop Qt 5.9.2 MSVC2015 32bit」をクローンしました。私が修正しなければならなかったのは、Qt mkspecとしてwin32-clang-msvcを入力し、C++コンパイラとして「LLVM 32bit based on MSVC2015」を選択することでした。私のプロジェクトは、このキットを使ってcl.exeではなくclang-cl.exeでビルドします。

+0

これは32ビット、MSVC2015のインストールでのみ機能しますか?私はMSVC2017 64bit環境でclangをセットアップしようとしていますが、PATHでMSVC2017ツールを使ってシェルを実行していても(cl.exeは動作します)、clangは基本アプリケーションをコンパイルするための標準ライブラリを見つけられません。 – pwuertz

+0

MSVC2015 32ビットと64ビットで動作することが確認できるのは、環境内で何も変更せずにQtクリエータからすべてを実行したときだけです。 LLVMツールチェーンは、 "ビルド&実行" - >コンパイラ - >自動検出で表示/使用しますか?シェルでビルドする場合、追加のclangパスが必要になることがありますか? MSVC2015ビルドツールのみをインストールする代わりになるかもしれませんが、2015年と2017年はABI互換ですので、必要ではないはずです。 – FourtyTwo

+0

MSVC2017の場合、Clang(現在はLLVM6)では自動検出機能がサポートされていませんが、MSVC2017のincludeとlibフラグをすべて定義してコマンドラインでコンパイル/リンクすることができました。 Qt:QtCreatorもQBSも、PATHのLLVMを使ってもClangを自動検出しません。あなたの自動検出されたclangは、MSVCの統合やシーンロジックの背後にあるいくつかのものが原因で、おそらくQtによって検出されます。 – pwuertz

関連する問題