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() コマンドの動作とは異なります。CMakeでは、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()を呼び出すことを示すことができます。一般的に、プロジェクトがCMake 3.18以前をサポートする必要がある場合を除き、MANUAL_FINALIZATION は不要です。
qt_finalize_target()、qt_add_executable()、および QTP0003も参照してください 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.