CMake - Qtコマンド

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要



Qt6 CoreのCMakeコマンド

Qt6 CoreのCMakeコマンド一覧

下表のCMakeコマンドは、Qt6::Coreが読み込まれた時に定義される。

 find_package(Qt6 REQUIRED COMPONENTS Core)


Qt6 CoreのCMakeコマンド
CMakeコマンド 説明
qt_add_big_resources 大きなバイナリリソースをオブジェクトコードにコンパイルする。
qt_add_binary_resources QtリソースファイルのリストからRCCファイルを生成する。
qt_add_executable プラットフォーム固有のタイプのアプリケーションターゲットを生成および確定する。
qt_add_library ライブラリを生成および確定する。
qt_add_plugin Qtプラグインターゲットを生成する。
qt_add_resources バイナリリソースをソースコードにコンパイルする。
qt_allow_non_utf8_sources ソースファイルがWindows用のUTF-8として強制的に扱われるのを防ぐ。
qt_android_add_apk_target androiddeployqtを実行して、APKを生成するビルドターゲットを定義する。
qt_android_apply_arch_suffix ターゲットバイナリの名前にアーキテクチャ固有のサフィックスを含めるように設定する。
qt_android_generate_deployment_settings androiddeployqtが必要とするデプロイ設定ファイルを生成する。
qt_deploy_qt_conf デプロイ時に、qt.confファイルを書き込む。
qt_deploy_runtime_dependencies 実行ファイルに必要なQtプラグイン、Qtライブラリ、非Qtライブラリをデプロイする。
qt_deploy_translations 実行ファイルが必要とするQtの翻訳をデプロイする。
qt_disable_unicode_defines ユニコード関連のコンパイラ定義がターゲット上で自動的に設定されるのを防ぐ。
qt_extract_metatypes Qtターゲットからmetatypesを抽出して、関連するmetatypes.jsonファイルを生成する。
qt_finalize_project Qtプロジェクトに関連するプラットフォーム固有のタスクを処理する。
qt_finalize_target Qtターゲットに関連するプラットフォーム固有のタスクを処理する。
qt_generate_deploy_app_script アプリケーションのデプロイスクリプトを生成する。
qt_generate_deploy_script カスタムデプロイスクリプトを生成する。
qt_generate_moc 入力ファイルに対して、mocを呼び出す。
qt_import_plugins インポートあるいは除外するプラグインのカスタムセットを指定する。
qt_policy QtのCMake APIのデフォルトの振る舞いを変更する。
qt_set_finalizer_mode ターゲットのファイナライズをカスタマイズする。
qt_standard_project_setup プロジェクト全体のデフォルトを標準的な配置に設定する。
qt_wrap_cpp ソースからmocファイルを生成する。


qt_add_resources / qt6_add_resources

バイナリリソースをソースコードにコンパイルするコマンドである。

リソースを追加するには、コマンドの第1引数に変数名かターゲットを渡す。
第1引数に変数名を渡すと、qt_add_resourcesコマンドはリソースコンパイラ(rcc)を使用してQtリソースファイルからソースコードを生成する。
生成されたソースファイルへのパスは、<VAR>に追加される。

第1引数としてターゲットを渡すと、関数は指定された<FILES>を含む<RESOURCE_NAME>という名前のリソースを生成する。
リソースは自動的に<TARGET>にリンクされる。

Qtリソースの詳細を知りたい場合は、Qtの公式ドキュメントを参照すること。

 # Qt 5
 qt_add_resources(<VAR> file1.qrc file2.qrc ...
                  [OPTIONS ...])
 
 # Qt 6
 qt_add_resources(<TARGET> <RESOURCE_NAME>
                  [PREFIX <PATH>]
                  [LANG <LANGUAGE>]
                  [BASE <PATH>]
                  [BIG_RESOURCES]
                  [OUTPUT_TARGETS <VARIABLE_NAME>]
                  [FILES ...] [OPTIONS ...]
 )
 
 # Qt 6 (バージョンレスコマンドが無効になっている場合)
 qt6_add_resources(<TARGET> <RESOURCE_NAME>
                   [PREFIX <PATH>]
                   [LANG <LANGUAGE>]
                   [BASE <PATH>]
                   [BIG_RESOURCES]
                   [OUTPUT_TARGETS <VARIABLE_NAME>]
                   [FILES ...] [OPTIONS ...]
 )


 # 使用例
 
 # .qrcファイルを使用した変数を使用する場合
 set(SOURCES main.cpp)
 qt_add_resources(SOURCES
    example.qrc
 )
 qt_add_executable(<プロジェクト名>
    ${SOURCES}
 )
 
 # 即時リソースを使用してターゲット名を指定する場合
 qt_add_executable(<プロジェクト名>
    main.cpp
 )
 qt_add_resources(<プロジェクト名> "images"
                  PREFIX "/images"
                  FILES image1.png image2.png
 )


  • ターゲット名を指定する場合のバリアントの引数
    • <PREFIX>
      このリソースの全てのファイルが、C++ソースコードからアクセスできるようにするためのパス接頭辞を指定する。
      これは、.qrcファイル形式のXML属性プレフィックスに対応する。
      <PREFIX>を指定しない場合、ターゲットプロパティQT_RESOURCE_PREFIXが使用される。

      Qt 6.5以降、PREFIXはオプションである。

      もし、PREFIXが省略されて、かつ、QT_RESOURCE_PREFIXで指定しない場合は、"/"がデフォルトのパス接頭辞として使用される。

    • <LANG>
      このリソースのロケールを指定する。
      これは、.qrcファイル形式のXML属性langに対応する。
    • <BASE>
      ファイルのエイリアスのルートポイントを示すパスプレフィックスである。
      例えば、<BASE>が"assets"、<FILES>が"assets/images/logo.png"の場合、そのファイルのエイリアスは、"images/logo.png"となる。

      ファイルのエイリアス設定は、<QT_RESOURCE_ALIAS>ソースファイルプロパティで設定する必要がある。

    • BIG_RESOURCES
      ビッグリソースのサポートを有効にできる。
      これは、C++ソースコードの代わりにオブジェクト・ファイル (.o .obj) を直接生成する。
      これにより、生成されたC++ソースをコンパイルすることなく、より大きなリソースを埋め込むことができる。

      <BIG_RESOURCES>は、CMakeのXcodeプロジェクトジェネレータの制限によりiOSと互換性が無いことに注意する。
      また、<BIG_RESOURCES>は、CMake 3.17以降でのみ動作する。

      静的ライブラリでこのコマンドを使用する場合、1つ以上の特別なターゲットが生成される。
      これらのターゲットに対して追加の処理を行う場合は、<OUTPUT_TARGETS>パラメータに変数名を渡す。

      qt_add_resourcesコマンドは、特殊ターゲットの名前を指定された変数に格納する。


qt_disable_unicode_definesコマンド

Qt 6では、Qtモジュールに対してリンクするターゲットに対して、UNICODE_UNICODEコンパイラ定義がデフォルトで有効化されている。
qt_disable_unicode_definesコマンドを実行することにより、UNICODE_UNICODEコンパイラ定義が自動的に設定されるのを防ぐことができる。

このコマンドは、Qt 6 Coreコンポーネントで定義されている。 (Qt 6.2で導入された)

バージョンレスコマンドが無効の場合は、代わりにqt6_disable_unicode_definesコマンドを使用する。

 find_package(Qt6 REQUIRED COMPONENTS Core)
 
 qt_disable_unicode_defines(myApp)