2011-07-07 10 views
1

複数のターゲットを持つプロジェクトでは、特定のターゲットのインクルードライブラリのみを追加したいと考えています。私はすべてのプロジェクトに多くのインクルードライブラリを追加してコンパイルを遅くしたくないですし、実行可能ファイルへの依存として必要なライブラリを指定しなかった場合、コンパイル時に失敗し、リンクだけでなく時間。単一のターゲットのインクルードライブラリ

CMakeでこれを行う方法はありますか? target_link_librariesのようなものですが、インクルードディレクトリだけですか?

答えて

1

まず、多くのインクルードディレクトリを追加したため、コンパイル時間が長くなることはありません。もちろん、それが本当に問題であるかどうかをテストする必要があります。

COMPILE_FLAGSプロパティをソースファイルに直接指定することもできますが、これはクロスプラットフォームではない可能性があり、各ソースファイルで行う必要があります。

また、サブディレクトリでプロジェクトを分割し、サブディレクトリごとに別々のCMakeLists.txtを作成することを検討してください。その場合、include_directories()呼び出しは現在のプロジェクト(およびそのサブプロジェクト)のスコープに制限されており、各プロジェクトに対してより細かい制御を行うことになります。

コンパイル時にエラーが発生する可能性があります。静的ライブラリAを使用する場合、Cに応じてBに依存します:誰かがexe/dllをAにリンクすると、libs BとCが必要ですが、コンパイル時に必ず検出できるとは限りません... CMakeと

+0

コンパイル時間がより小さい問題であり、早期失敗が大きな問題です。 –

+0

次に、複数の依存静的ライブラリを扱っているのですか?もしそうなら、それは難しいだろうが、いくつかのプリプロセッサを作ると、おそらく達成可能なcmakeのハッカー –

関連する問題