1. ホーム
  2. cmake

[解決済み] CMake target_link_libraries インターフェース依存性

2022-06-28 07:49:58

質問

私は CMake の初心者で、PUBLIC、PRIVATE、INTERFACE のキーワードに関連して少し混乱しています。 target_link_libraries() . ドキュメントでは、1つのコマンドでリンクの依存性とリンクインターフェースの両方を指定するために使用することができると言及しています。

リンク依存性とリンクインターフェースとは、実際にはどのような意味ですか?

どのように解決するのですか?

共有ライブラリを作成する場合で、ソースが cpp ファイル #include 他のライブラリのヘッダー(Say, QtNetwork など)、ヘッダファイルには QtNetwork ヘッダを含まない場合 QtNetworkPRIVATE 依存関係です。

ソースファイルやヘッダが他のライブラリのヘッダを含んでいる場合、それは PUBLIC 依存となります。

ソースファイル以外のヘッダーファイルが他のライブラリのヘッダーを含んでいる場合、それは INTERFACE 依存となります。

の他のビルドプロパティは PUBLICINTERFACE の依存関係は、消費ライブラリに伝搬されます。 http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements