web-dev-qa-db-ja.com

Qt 5.9.1に同梱されているQtLinguistを機能させるにはどうすればよいですか?

目標:lupdateを使用して、Qtウィジェットアプリの* .tsファイルを生成/更新します。

設定:

  • Windows 7 Pro 64(Windows 10 Homeでも試してみました)
  • Qt 5.9.1 msvc201764ビットのPrebultコンポーネント、
  • Visual Studio Community2017。

問題:QtCreatorからlupdateを実行しましたが、コンソールから手動で実行しました。しかし、どちらの場合も機能していません。メッセージは次のとおりです。

外部ツール "C:\ Qt\Qt5.9.1\5.9.1\msvc2017_64\bin\lupdate.exe"を起動していますC:/Documents/Projects/untitled1/untitled1.pro警告:プロジェクトエラー:コンパイラ 'cl'を実行できません。たぶんあなたは環境をセットアップするのを忘れましたか?

「C:\ Qt\Qt5.9.1\5.9.1\msvc2017_64\bin\lupdate.exe」が終了しました

それ以外の場合、プロジェクトはキットで問題なくコンパイル、実行、デバッグされます:デスクトップQt 5.9.1 MSVC2017 64ビット(デフォルト)、これが環境だと思う理由です正しく設定されています。

この問題に関する情報が見つかりません。 lupdateを機能させる方法はありますか?

編集:環境が適切にセットアップされていると思う理由を明確にするために、現在のセットアップ(Qtインストーラーによって作成されたもの)のスクリーンショットを追加しています:

キット

cmake構成

12
scopchanov

解決策

これが私が見つけた解決策です(むしろハックっぽいですが、あまり多くはありません)、nmによって親切に提供された情報とアドバイスに基づいています質問の下のコメント:

  1. 次の1行のコンテンツでtranslate.batを作成します。

    "%programfiles(x86)%\ Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"&lupdate.exe%1

%{CurrentProject:QT_INSTALL_BINS}(私の場合はC:\Qt\Qt5.9.1\5.9.1\msvc2017_64\bin)の下に置きます。 translate.batに、マシン上のvcvars64.batへの正しいパスが含まれていることを確認してください。必要に応じて、別のバージョンのvcvarsを配置することもできます。

  1. Qt Creatorで、Tools/Options/Environment/External Toolsを選択し、次にAdd ToolLinguistカテゴリの下。 TSファイルの作成/更新のような名前を付けます。このエントリのフィールドを次のように設定します。

    • 実行可能ファイル%{CurrentProject:QT_INSTALL_BINS}\translate.bat

    • 引数%{CurrentProject:FilePath}

    • 作業ディレクトリ%{CurrentProject:QT_INSTALL_BINS}

ここに示すように: 外部ツール 次に、変更を適用してオプションウィンドウを閉じます。

  1. Tools/External/Linguistに移動し、Create/Update TSファイルを選択すると、いつものように仕事。

背景

これもまた、コメントのn.m。によって提供される リンク であり、このソリューションのベースとして機能しました。これもn.m。の説明です:

コンソールからlupdateを実行するには、私が提供したリンクで説明されているように、vcbars * .batを実行する必要があります。これは、lupdateがコンパイラーを実行したいと考えており、どこにあるかわからないためです。 vcbars * .batは、PATHおよびその他の環境変数を微調整します。理論的にはGUIが環境を設定する必要がありますが、実際にはそうではない可能性があります。

9
scopchanov

MingwバージョンのQt5.9.1を使用している場合は、mingwコンパイルツールのシステムパスを構成する必要がある場合があります。

config system path for mingw for Qt's langulist lupdate

4
ndtc

私の場合、原因は、QtCreatorがCとC++の異なるターゲットABIを何らかの方法で選択したという事実でした。

C and C++ ABI mismatch

これを修正した後、問題なくlupdateを実行することができました。

2
Alexandros

lupdate.exeコンソールからVS2015 x86 Native Tools Command Promptを実行する必要があります。

1
Silver Zachara