MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
CMake - Qtコマンドのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
CMake - Qtコマンド
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == Qt6 CoreのCMakeコマンド == ==== Qt6 CoreのCMakeコマンド一覧 ==== 下表のCMakeコマンドは、Qt6::Coreが読み込まれた時に定義される。<br> <syntaxhighlight lang="cmake"> find_package(Qt6 REQUIRED COMPONENTS Core) </syntaxhighlight> <br> <center> {| class="wikitable" | style="background-color:#fefefe;" |+ Qt6 CoreのCMakeコマンド |- ! style="background-color:#66CCFF;" | CMakeコマンド ! style="background-color:#66CCFF;" | 説明 |- | 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ファイルを生成する。 |} </center> <br> ==== qt_add_resources / qt6_add_resources ==== バイナリリソースをソースコードにコンパイルするコマンドである。<br> <br> リソースを追加するには、コマンドの第1引数に変数名かターゲットを渡す。<br> 第1引数に変数名を渡すと、qt_add_resourcesコマンドはリソースコンパイラ(rcc)を使用してQtリソースファイルからソースコードを生成する。<br> 生成されたソースファイルへのパスは、<nowiki><VAR></nowiki>に追加される。<br> <br> 第1引数としてターゲットを渡すと、関数は指定された<FILES>を含む<RESOURCE_NAME>という名前のリソースを生成する。<br> リソースは自動的に<TARGET>にリンクされる。<br> <br> Qtリソースの詳細を知りたい場合は、[https://doc.qt.io/qt-6/resources.html Qtの公式ドキュメント]を参照すること。<br> <syntaxhighlight lang="cmake"> # 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 ...] ) </syntaxhighlight> <br> <syntaxhighlight lang="cmake"> # 使用例 # .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 ) </syntaxhighlight> <br> * ターゲット名を指定する場合のバリアントの引数 ** <PREFIX> **: このリソースの全てのファイルが、C++ソースコードからアクセスできるようにするためのパス接頭辞を指定する。 **: これは、.qrcファイル形式のXML属性プレフィックスに対応する。 **: <PREFIX>を指定しない場合、ターゲットプロパティQT_RESOURCE_PREFIXが使用される。 **: <br> **: Qt 6.5以降、PREFIXはオプションである。<br> **: <br> **: もし、PREFIXが省略されて、かつ、QT_RESOURCE_PREFIXで指定しない場合は、"/"がデフォルトのパス接頭辞として使用される。<br> **: <br> ** <LANG> **: このリソースのロケールを指定する。 **: これは、.qrcファイル形式のXML属性langに対応する。 ** <BASE> **: ファイルのエイリアスのルートポイントを示すパスプレフィックスである。 **: 例えば、<BASE>が"assets"、<FILES>が"assets/images/logo.png"の場合、そのファイルのエイリアスは、"images/logo.png"となる。 **: <br> **: ファイルのエイリアス設定は、<QT_RESOURCE_ALIAS>ソースファイルプロパティで設定する必要がある。 **: <br> ** BIG_RESOURCES **: ビッグリソースのサポートを有効にできる。 **: これは、C++ソースコードの代わりにオブジェクト・ファイル (.o .obj) を直接生成する。 **: これにより、生成されたC++ソースをコンパイルすることなく、より大きなリソースを埋め込むことができる。 **: <br> **: <BIG_RESOURCES>は、CMakeのXcodeプロジェクトジェネレータの制限によりiOSと互換性が無いことに注意する。 **: また、<BIG_RESOURCES>は、CMake 3.17以降でのみ動作する。 **: <br> **: 静的ライブラリでこのコマンドを使用する場合、1つ以上の特別なターゲットが生成される。 **: これらのターゲットに対して追加の処理を行う場合は、<OUTPUT_TARGETS>パラメータに変数名を渡す。 **: <br> **: qt_add_resourcesコマンドは、特殊ターゲットの名前を指定された変数に格納する。 <br><br> == バージョンレスコマンド == Qt 5.15以降、Qtモジュールはバージョンレスのコマンドも提供している。<br> 例えば、Qt5とQt6のどちらを使用していても、<code>qt_add_translation</code>コマンドを使用して、翻訳ファイルをコンパイルすることができる。<br> <br> 最初の<code>find_package</code>コマンドの実行の前に、<code>QT_NO_CREATE_VERSIONLESS_FUNCTIONS</code>を設定して、バージョンレスコマンドの作成を防ぐ。<br> <br> * <code>QT_NO_CREATE_VERSIONLESS_FUNCTIONS</code> *: qt_で始まるコマンドを非表示にして、qt6_で始まるバージョン管理されたコマンドのみを残す。 <br> このマクロを定義することで、Qtのバージョン付きのシンボルのみが使用されるようになる。<br> これは、特にQtの異なるバージョンを混在させる場合や明示的にバージョン管理を行う場合に有用である。<br> <br> 以下の例では、<code>find_package</code>コマンドの前に<code>set</code>コマンドで<code>QT_NO_CREATE_VERSIONLESS_FUNCTIONS</code>を<code>TRUE</code>に設定している。<br> これにより、Qtのバージョンなしのシンボルが生成されないようになる。<br> CMake 3.16以降が必要な場合があるため、<code>cmake_minimum_required</code>コマンドを適切に設定する必要がある。<br> <syntaxhighlight lang="cmake"> cmake_minimum_required(VERSION 3.16) # Set QT_NO_CREATE_VERSIONLESS_FUNCTIONS before calling find_package set(QT_NO_CREATE_VERSIONLESS_FUNCTIONS TRUE) project(MyQtProject) # 使用するQtライブラリ find_package(Qt6 REQUIRED COMPONENTS Core Widgets) # 実行ファイルのソースファイルおよびヘッダファイル add_executable(MyApp main.cpp) # Qtライブラリのリンク target_link_libraries(MyApp Qt6::Core Qt6::Widgets) </syntaxhighlight> <br><br> == バージョンレスターゲット == 既存のインポートターゲットに加えて、Qt 5.15以降ではバージョンレスターゲットが使用できる。<br> 例えば、Qt Coreライブラリとリンクする場合、Qt6::CoreとQt::Coreの両方を参照することができる。<br> <br> バージョンレスターゲットはデフォルトで定義されている。<br> バージョンレスターゲットを無効にする場合は、最初の<code>find_package</code>コマンドの実行前に、<code>QT_NO_CREATE_VERSIONLESS_TARGETS</code>を設定する必要がある。<br> <br> * <code>QT_NO_CREATE_VERSIONLESS_TARGETS</code> *: Qt::で始まるインポートされたターゲットを隠す。 *: 代わりに、Qt6::で始まるターゲットを使用する必要がある。 <br> <u>※注意</u><br> <u>例えば、インポートされたQt::Coreターゲットには、Qt6::Coreターゲットで利用可能なターゲットプロパティは無いことに注意する。</u><br> <br> 以下の例では、まず、Qt6ライブラリを探索する。<br> 探索に失敗した場合は、Qt 5.15ライブラリを探索する。<br> これにより、Qt 5 / 6に関係なく、インポートされたQt::Coreターゲットを使用することができる。<br> <syntaxhighlight lang="cmake"> find_package(Qt6 COMPONENTS Core) if (NOT Qt6_FOUND) find_package(Qt5 5.15 REQUIRED COMPONENTS Core) endif() add_executable(myApp # ...略 ) target_link_libraries(myApp PRIVATE Qt::Core) </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:Qt]]
CMake - Qtコマンド
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse