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()
の場合と同様に、STATIC
、SHARED
、MODULE
、INTERFACE
、OBJECT
のいずれかのキーワードで明示的に指定できます。これらのキーワードが指定されていない場合、作成されるライブラリのタイプは Qt がどのようにビルドされたかに依存します。Qtが静的にビルドされた場合、スタティック・ライブラリが作成されます。そうでない場合は、共有ライブラリが作成されます。これは、CMakeのadd_library()
コマンドの動作方法とは異なることに注意してください。BUILD_SHARED_LIBS
変数は、作成されるライブラリのタイプを制御します。6.7 以降、qt_add_library()
コマンドがライブラリのタイプを決定する際にBUILD_SHARED_LIBS
を考慮するのは、この変数が明示的に設定され、QTP0003がNEW
に設定されている場合のみです。
提供された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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。