Qt Creator 15 の CMake 更新

本稿は「Qt Creator 15 - CMake Update」の抄訳です。
 

Qt Creator 15 における CMake の新機能と修正点は以下の通りです。

QMake プロジェクトと機能的な同等性の向上

Qt Creator 15 では、CMake プロジェクトにサブプロジェクトを追加できるようになりました。これは、プロジェクト上で右クリックしてコンテキストメニューを表示し、「New Subproject …(新規サブプロジェクト)」を選択することで実行できます。

qtcreator-15-cmake-add-subproject

この新たに追加されたサブプロジェクトは、独立してビルド/クリーン/リビルドすることができます。右クリックのコンテキストメニュー、またはトップレベルのビルドメニューから実行できます。

qtcreator-15-cmake-rebuild-subproject

フォームディレクトリに鉛筆アイコンが表示されていることに注目してください。これはQMakeプロジェクトの場合と同じです。

これは、パッケージマネージャ自動設定 が有効になっているプロジェクトで利用できます。現在、Qt CreatorがCMakeコードの次の部分を統合できる唯一の方法であるためです。

option(QT_CREATOR_SOURCE_GROUPS "Qt Creator source groups extensions" ON)
if (QT_CREATOR_SOURCE_GROUPS)
  source_group("Resources" REGULAR_EXPRESSION "\\.(pdf|plist|png|jpeg|jpg|storyboard|xcassets|qrc|svg|gif|ico|webp)$")
  source_group("Forms" REGULAR_EXPRESSION "\\.(ui)$")
  source_group("State charts" REGULAR_EXPRESSION "\\.(scxml)$")
endif()

CMake ターゲットには、関連する CMakeLists.txt ファイルノードがあります。

以下に示すように、CMake のロゴアイコンが付いたフォルダとしてマークされたすべてのサブプロジェクトには、コンテキストメニューに 「開く…」という項目が追加されています。この操作により、対応する CMakeLists.txtファイルにアクセスできます。

注目すべきは、各 CMake ターゲットには、定義するCMakeLists.txt ファイルを持つファイルノードがプロジェクトビューに表示されることです。

この変更により、Simplify Tree ビューの CMakeLists.txt エントリが散らからなくなります。

qtcreator-15-target-cmakelists

FOLDERプロパティのサポート

CMakeプロジェクトでFOLDERプロパティを使用して構造を整理する場合、Qt Creatorはこれらのフォルダー階層を反映して表示するようになりました。

qtcreator-15-cmake-folder-property

CMakeCache.txtによるプロジェクトの読み込み

Qt Creator 15では、<ビルドディレクトリ>/CMakeCache.txt ファイルを使用してCMakeプロジェクトを読み込むことができます。これは、CMakeLists.txt プロジェクトを開き、<ビルドディレクトリ> 構成をインポートすることと同等です

qtcreator-15-cmake-cmakecache

パッケージマネージャの自動セットアップ:Windows UTF-8 の課題

ここでは、コンソール出力にテキスト「Holiday Greetings 🌲✨ !」を表示することが目的です。さらに、プロジェクトは HolidayGreetings🌲✨ という名前のフォルダ内に存在する必要があります。

Windows の構成は、以下のように標準の英語(米国)言語設定です。

windows-11-default-english-configuration

英語のロケール環境でUTF-8のUnicodeテキストを出力する必要を満たすために、Conanが提供する{fmt}ライブラリを使用します。CMakeLists.txtmain.cppconanfile.txtのソースコードは以下の通りです。

cmake_minimum_required(VERSION 3.16)

project
(HolidayGreetings🌲✨)
set(CMAKE_CXX_STANDARD 17)
find_package
(fmt CONFIG REQUIRED)
add_executable
(HolidayGreetings main.cpp) target_link_libraries(HolidayGreetings PRIVATE fmt::fmt)
#include <fmt/printf.h>
int main() { fmt::print("Holiday Greetings 🌲✨ !\n"); return 0; }
[requires]
fmt/11.0.0

qtcreator-15-holiday-greetings


Blog Topics:

Comments