qt_standard_project_setup

プロジェクト全体のデフォルトを標準的な配置に設定します。

このコマンドはQt6 パッケージのCore コンポーネントで定義されています:

find_package(Qt6 REQUIRED COMPONENTS Core)

このコマンドは Qt 6.3 で導入されました。

概要

qt_standard_project_setup(
    [REQUIRES <version>]
    [SUPPORTS_UP_TO <version>]
    [I18N_TRANSLATED_LANGUAGES <language...>]
    [I18N_SOURCE_LANGUAGE <language>]
)

バージョンレスコマンドが無効になっている場合、代わりにqt6_standard_project_setup() を使用してください。このコマンドと同じ引数をサポートしています。

説明

このコマンドは、典型的なQtアプリケーションのセットアップ作業を簡略化します。通常、トップレベルのCMakeLists.txt ファイルで、ターゲットが定義される前に、最初のfind_package(Qt6) 呼び出しの直後に呼び出されます。これは以下のことを行います:

  • 標準のCMake変数CMAKE_AUTOMOCCMAKE_AUTOUIC がまだ定義されていなければtrueに設定されます。これにより、カレントディレクトリースコープ以下で、その後に作成されるターゲットに対して、デフォルトですべてのQt関連のautogen機能が有効になります。
  • CMake のGNUInstallDirsモジュールが自動的にインクルードされます。これはCMAKE_INSTALL_BINDIRCMAKE_INSTALL_LIBDIR などの変数に適切なデフォルトを定義します。
  • Windows をターゲットとする場合、CMAKE_RUNTIME_OUTPUT_DIRECTORY 変数がまだ設定されていなければ、${CMAKE_CURRENT_BINARY_DIR} に設定されます。
  • Apple や Windows 以外のプラットフォームをターゲットにする場合、CMAKE_INSTALL_RPATH は後述のように補強されます。
  • CMake のUSE_FOLDERSプロパティはON に設定され、QT_TARGETS_FOLDERQtInternalTargets に設定されます。フォルダをサポートする IDE は、このフォルダに Qt-internal ターゲットを表示します。

Qt 6.5 以降、Qt の CMake API のデフォルトの動作を変更することができます。REQUIRES が指定された場合、REQUIRES までの Qt で導入されたすべての変更案が有効になり、古い Qt バージョンを使用するとエラーになります。さらにSUPPORTS_UP_TO が指定された場合、SUPPORTS_UP_TO までのバージョンで導入された新しい変更も有効になります(ただし、古い Qt バージョンを使用してもエラーにはなりません)。これはCMakeのポリシーの概念に似ています(cmake_policyを比較してください)。

RPATH をサポートするプラットフォーム (Apple プラットフォーム以外) では、このコマンドによってCMAKE_INSTALL_RPATH 変数に 2 つの値が追加されます。$ORIGIN は、ライブラリが自分自身と同じディレクトリにある、依存する他のライブラリを見つけられるように追加されます。$ORIGIN/<reldir> も追加されます。<reldir> は、CMAKE_INSTALL_BINDIR からCMAKE_INSTALL_LIBDIR までの相対パスです。これにより、CMAKE_INSTALL_BINDIR にインストールされた実行ファイルが、CMAKE_INSTALL_LIBDIR にインストールされた依存するライブラリを見つけられるようになります。CMAKE_INSTALL_RPATH の重複はすべて削除される。実際には、これらの 2 つの値は、プロジェクトが、インストール先が明示的に指定されていない場合にinstall(TARGETS)コマンドが使用するデフォルトの場所にインストールすることを前提として、実行可能ファイルやライブラリがリンク時に依存する場所を見つけることを保証します。

IDEのフォルダ・サポートを無効にするには、qt_standard_project_setup を呼び出す前または後に、USE_FOLDERS を OFF に設定します。

qt_standard_project_setup() コマンドは、QT_NO_STANDARD_PROJECT_SETUP変数を true に設定することで、効果的に無効にすることができます。

国際化

Qt 6.7 以降、I18N_TRANSLATED_LANGUAGES 引数でプロジェクトの国際化に使用する言語を指定できます。詳細はQT_I18N_TRANSLATED_LANGUAGESを参照してください。

翻訳可能な文字列を記述する言語を指定するには I18N_SOURCE_LANGUAGE を使用します。デフォルトではen が使われます。詳細はQT_I18N_SOURCE_LANGUAGEを参照してください。

cmake_minimum_required(VERSION 3.16...3.22)
project(MyThings)

find_package(Qt6 REQUIRED COMPONENTS Core)
qt_standard_project_setup()

qt_add_executable(MyApp main.cpp)

install(TARGETS MyApp
    BUNDLE  DESTINATION .
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

qt_generate_deploy_app_script(
    TARGET MyApp
    OUTPUT_SCRIPT deploy_script
    NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})

qt_generate_deploy_app_script(),qt_policy,qt_add_translations()も参照してください

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。