Qbs 2.5 リリース

本稿は「Qbs 2.5 released」の抄訳です。
 

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つの新機能を示しています。

  • 他のアイテム、すなわちDependsFileTaggerRuleScannerを含めることができるようになりました。これらのサブアイテムにも暗黙的に条件が適用されます。
  • また、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_lsp

お試しください

Qbsはダウンロードページからダウンロードできます。

問題がある場合は、バグトラッカーに報告してください。

ライブディスカッションを行うには、Discordサーバーに参加してください。質問やディスカッションには、メーリングリストもご利用いただけます。

また、ドキュメントWikiも参考になるでしょう。

Qbs は、多数のパッケージリポジトリ(ChocolateyMacPortsHomebrew)から入手でき、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