Qbs 2.5 リリース
12月 06, 2024 by Qt Group 日本オフィス | Comments
Qbsビルドツールのバージョン2.5が利用可能です。
Qbsは、コミュニティ主導の言語非依存のビルド自動化システムです。高速で、QMLをベースとした習得しやすい言語を提供します。
目立つ機能
言語の改善
qbsプロジェクトファイルを記述する際の長い間の悩みの種は、異なるコンテキストで同じ条件を繰り返し記述しなければならないことが多かったことです。例えば
CppApplication {
Depends { name: "ib"; condition: qbs.targetOS.contains("darwin") }
Properties {
condition: qbs.targetOS.contains("darwin")
cpp.defines: "DARWIN_FEATURES"
}
Group {
name: "darwin-specific files"
condition: qbs.targetOS.contains("darwin")
files: [ /* ... */ ]
}
}
QBS 2.5 以降では、共通条件をグループ化の中心的な基準として使用することで、このやや雑然とした構造を整理することができます。
CppApplication {
Group {
name: "darwin-specific"
condition: qbs.targetOS.contains("darwin")
Depends { name: "ib" }
product.cpp.defines: "DARWIN_FEATURES"
files: [ /* ... */ ]
}
}
上記の製品は、Groupアイテムの2つの新機能を示しています。
- 他のアイテム、すなわち
Depends
、FileTagger
、Rule
、Scanner
を含めることができるようになりました。これらのサブアイテムにも暗黙的に条件が適用されます。 - また、
Properties
アイテムのように動作し、製品内のすべてのアーティファクトに対してモジュールプロパティを条件付きで設定できるようになりました。
Propertiesアイテムについて言えば、こちらも長らく必要とされていた大幅な改良が加えられました。最も重要なのは、条件が重複できるようになり、複数の条件が同じリストプロパティに適用できるようになったことです。
Properties {
condition: qbs.targetOS.contains("unix")
cpp.includePaths: "myincludes/unix/common"
}
Properties {
condition: qbs.targetOS.contains("linux")
cpp.includePaths: "myincludes/unix/linux"
}
上記の例では、Linux(つまりUnix)をターゲットとするビルドでは両方のインクルードパスが使用されますが、例えばFreeBSDをターゲットとするビルドでは最初のインクルードパスだけが使用されます。以前のバージョンのqbsでは、最大でも1つの代替が使用されていたため、2番目のプロパティは効果を持ちませんでした。
トップレベル(リスト)のプロパティバインドが「暗黙の else ケース」として動作することは意味をなさなくなることに注意してください。その代わり、無条件にプロパティ値に寄与するようになります。後方互換性を維持するため、この特定の機能は徐々に導入されます。古い動作に依存すると、qbs 2.6で警告が発生し、その後でセマンティクスが変更されます。代替値を指定する新しい方法は、条件をundefined
に設定したProperties
アイテムを使用することです。
言語のさらなる改善については、変更履歴をご確認ください。
C++モジュール
このバージョンのqbsでは、C++モジュールの試験的なサポートも提供されるようになりました。現時点では、cpp.forceUseCxxModulesプロパティを設定して明示的に有効にする必要があります。詳しい手順についてはこちらをご覧ください。問題が発生した場合は、ご遠慮なくバグレポートを提出してください。
WebAssemblyのサポート
3つ目の大きな新機能として、emscriptenツールチェーン経由でWebAssemblyをサポートするようになりました。この目的のために、新しいツールチェーンのタイプであるemscripten
と、cppモジュール用の関連バックエンドを導入しました。Qt for WebAssemblyもサポートされています。
その他の主要な変更
また、今回のリリースでは以下の変更が加えられています。
- freedesktopモジュールがローカライズと複数のアイコンの展開をサポートするようになりました。
- JSON APIがファイルの名前変更をサポートするようになりました。
さらに、前回のブログ記事以降に導入された目立つ機能として
- conanモジュールプロバイダー
- flatbuffersモジュール
- Exporter.cmakeモジュール
- LSPサーバー(以下、Qt Creator内で動作を示します)
が挙げられます。
お試しください
Qbsはダウンロードページからダウンロードできます。
問題がある場合は、バグトラッカーに報告してください。
ライブディスカッションを行うには、Discordサーバーに参加してください。質問やディスカッションには、メーリングリストもご利用いただけます。
Qbs は、多数のパッケージリポジトリ(Chocolatey、MacPorts、Homebrew)から入手でき、Qbs 開発チームによりリリースごとに更新されています。また、多数の Linux ディストリビューションのネイティブなパッケージ管理システムを通じてインストールすることもできます。詳細は、repology.org をご覧ください。
Qbs 2.5.0 は、Qt Creator 15.0.0 にも含まれています。
貢献
Qbsのユーザーとして満足されているのであれば、ぜひ他の人にも教えてあげてください。 また、何か貢献したいと思われるかもしれません。 Qbsをより良くするものはすべて大歓迎です。 貢献には、バグの報告や、そのバグをすぐに修正することが含まれます。 また、新しい機能も大歓迎です。ご提供いただいたパッチは、当社のCIボットによって、Linux、macOS、Windows上で自動的に健全性チェック、ビルド、検証が行われます。
Qbs Wikiの指示に従って作業を開始してください。
2.5リリースを実現してくださった皆様に感謝いたします。
- Aaron McCarthy
- Christian Kandeler
- Danya Patrushev
- Ivan Komissarov
- Leon Buckel
- Roman Telezhynsky
Blog Topics:
Comments
Subscribe to our newsletter
Subscribe Newsletter
Try Qt 6.8 Now!
Download the latest release here: www.qt.io/download.
Qt 6.8 release focuses on technology trends like spatial computing & XR, complex data visualization in 2D & 3D, and ARM-based development for desktop.
We're Hiring
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.