qt_add_library

ライブラリを作成し、確定します。

このコマンドはQt6 パッケージのCore コンポーネントで定義されています:

find_package(Qt6 REQUIRED COMPONENTS Core)

このコマンドは Qt 6.2 で導入されました。

概要

qt_add_library(target
    [STATIC | SHARED | MODULE | INTERFACE | OBJECT]
    [MANUAL_FINALIZATION]
    sources...
)

バージョンレスコマンドが無効になっている場合は、代わりにqt6_add_library() を使ってください。このコマンドと同じ引数セットをサポートしている。

説明

qt_add_library() は、CMake の組み込み コマンドのラッパーです。以下のタスクを実行します:add_library()

  • 適切なライブラリタイプのCMakeターゲットを作成する。
  • CMakeターゲットのファイナライズを処理します。

ターゲットの作成

作成されるライブラリのタイプは、add_library() の場合と同様に、STATICSHAREDMODULEINTERFACEOBJECT のいずれかのキーワードで明示的に指定できます。これらのキーワードが指定されていない場合、作成されるライブラリのタイプは Qt がどのようにビルドされたかに依存します。Qtが静的にビルドされた場合、スタティック・ライブラリが作成されます。そうでない場合は、共有ライブラリが作成されます。これは、CMakeのadd_library() コマンドの動作方法とは異なることに注意してください。BUILD_SHARED_LIBS 変数は、作成されるライブラリのタイプを制御します。6.7 以降、qt_add_library() コマンドがライブラリのタイプを決定する際にBUILD_SHARED_LIBS を考慮するのは、この変数が明示的に設定され、QTP0003NEW に設定されている場合のみです。

提供されたsources はすべて、add_library() の内部呼び出しに渡される。

最終化

ターゲットが作成された後、更なる処理や最終化のステップが必要になるかもしれません。最終化処理はqt_finalize_target()コマンドによって実装されます。

最終化は、この呼び出しの一部として発生することも、このコマンドが戻った後に延期することもできます(ただし、同じディレクトリスコープ内にある必要があります)。CMake 3.19以降を使用している場合、最終化は自動的に現在のディレクトリスコープの最後まで延期されます。これにより、最終化される前に、呼び出し元は作成されたターゲットのプロパティを変更することができます。CMake 3.19 より前のバージョンを使用する場合、自動的な遅延はサポートされません。その場合、最終化はこのコマンドが戻る直前に実行されます。

CMake のバージョンに関係なく、MANUAL_FINALIZATION キーワードを指定することで、後で自分で明示的にqt_finalize_target() を呼び出すことを示すことができます。一般的に、MANUAL_FINALIZATION は、プロジェクトが CMake 3.18 以前をサポートする必要がない限り、必要ありません。

qt_finalize_target(),qt_add_executable(),QTP0003も参照してください

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。