5

私は C++ リポジトリ用に CMake を少し試していますが、追加の CMake コードをあまり使わずに、同じソース ツリー内のライブラリに対してアプリケーションを簡単にビルドできるようにしようとすると、いくつかの問題が発生します。

ソース ツリーのレイアウトは基本的に次のとおりです。

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

ライブラリは互いに独立しており、アプリケーションは 1 つまたは複数のライブラリにリンクできます。

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

これを処理する一般的な方法はありますか?各アプリケーションの CMakeLists.txt で、必要なライブラリへのパスを手動でリストする必要はありません。

4

1 に答える 1

1

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

于 2012-08-08T14:52:21.000 に答える