2016-10-03 6 views
0

メインアプリケーションのINTERFACE_INCLUDE_DIRECTORIESをライブラリ(プラグイン)ターゲットにロードするにはどうすればよいですか?私はライブラリのINTERFACE_INCLUDE_DIRECTORIESをロードする方法を知っていますが、ライブラリをリンクせずにロードする方法はわかりません。CMake:メインアプリケーションのインターフェイスクラスを別のcmakeターゲットにロードするには?

├── app 
├── pluga 
└── plugb 
+0

リンクは、あるターゲットから別のターゲットにプロパティを自動的に伝播する唯一の方法です。 * header-only *ライブラリ( 'add_library(... INTERFACE)')を作成し、そのINTERFACE_INCLUDE_DIRECTORIESプロパティを設定し、アプリケーションとプラグインの両方をリンクすることができます。 – Tsyvarev

答えて

0

target_include_directories()コマンドはPUBLICINTERFACEキーワードに指定された値でINTERFACE_INCLUDE_DIRECTORIESに移入されます。

ターゲットは、ターゲットのヘッダーに対してコンパイルするために必要なインクルードディレクトリを公開するために、このプロパティを設定できます。消費ターゲットは、$<TARGET_PROPERTY:foo,INTERFACE_INCLUDE_DIRECTORIES>などの独自のINCLUDE_DIRECTORIESプロパティにエントリを追加して、fooのインタフェースで指定されたインクルードディレクトリを使用することができます。

だから、答えは使用することです:

target_include_directories(pluga INTERFACE 
    $<TARGET_PROPERTY:app,INTERFACE_INCLUDE_DIRECTORIES> 
) 

documentationから。

関連する問題