2012-07-18 7 views
5

私はCMakeをC++リポジトリ用に少し実験していますが、同じソースツリーのライブラリに対してアプリケーションをたくさん作成することなく簡単にアプリケーションを構築しようとしています追加のCMakeコード。には、cmakeのライブラリ依存関係のヘッダが簡単に含まれています

ソースツリーのレイアウトは基本的に次のようである:

ROOT 
    libs/ 
     lib1/ 
     lib2/ 
     lib3/ 
    apps/ 
     app1/ 
     app2/ 
     app3/ 

ライブラリーは、互いに独立しており、アプリケーションは、ライブラリーの一つ以上をリンクすることができます。

現在、私は、各アプリケーションとライブラリをサブディレクトリとしてリストするルートCMakeLists.txtを持っています。そのため、ライブラリが変更され、アプリケーションが再構築された場合、ライブラリも再構築されます。これはうまく動作し、CMakeはライブラリがどこにあるのか指定することなくそれをリンクしますが、インクルードディレクトリに似たようなことをする方法はありません。

これを処理する一般的な方法はありますか?私は、各アプリケーションのCMakeLists.txtに、必要なライブラリへのパスを手動でリストする必要がないようにしたいと考えています。

答えて

1

各アプリケーションで実際に必要なヘッダーより多くのヘッダーを作成することを恐れていない場合は、すべてのlibディレクトリをINCLUDE_DIRECTORIESステートメントにリストすることができます。 CMakeListst.txtにすべてのアプリケーションサブリストを追加します。しかし、ターゲットごとに組み込みの「所属」インクルードフォルダを管理するという概念はありません。

関連する問題