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_AUTOMOC
とCMAKE_AUTOUIC
がまだ定義されていなければtrueに設定されます。これにより、カレントディレクトリースコープ以下で、その後に作成されるターゲットに対して、デフォルトですべてのQt関連のautogen機能が有効になります。 - CMake のGNUInstallDirsモジュールが自動的にインクルードされます。これは
CMAKE_INSTALL_BINDIR
やCMAKE_INSTALL_LIBDIR
などの変数に適切なデフォルトを定義します。 - Windows をターゲットとする場合、
CMAKE_RUNTIME_OUTPUT_DIRECTORY
変数がまだ設定されていなければ、${CMAKE_CURRENT_BINARY_DIR}
に設定されます。 - Apple や Windows 以外のプラットフォームをターゲットにする場合、
CMAKE_INSTALL_RPATH
は後述のように補強されます。 - CMake のUSE_FOLDERSプロパティは
ON
に設定され、QT_TARGETS_FOLDERはQtInternalTargets
に設定されます。フォルダをサポートする 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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。