質問
私はCMakeの両方に使用する2つのプロジェクトを持っています。今、私はまだ、スタンドアロンのプロジェクトとして、それらをコンパイルする機能を維持しながら、他の内部ライブラリとしてプロジェクトの一つを含めるます。
私がこれまでに行っていることである:親プロジェクトのサブディレクトリに子プロジェクトのコピーのクローンを作成するためにバージョン管理システムを使用してください。私は、親プロジェクトに子プロジェクトのCMakeLists.txtを含めるように「add_subdirectory」を使用しました。そして、私は子プロジェクトでターゲットのいくつかの名前を変更することにより、ターゲット間の名前の衝突を固定しています。
しかし、私はに実行しています問題は、子プロジェクトでさまざまな構成のテストが実行されていないようだということです。例えば、子プロジェクトは、同期プリミティブが利用可能であるかを判断するためにFindThreadsモジュールを使用しています。親プロジェクトは、スレッドの問題を認識していないため、これに関連するすべてのテストを持っていません。同様に、子プロジェクトは、親プロジェクトで必要とされていないヘッダやなどのためのさまざまなテストを持っています。これらのテストのいずれも実行されているように見えないし、これらのテストで定義されたシンボルは、CMakeCache.txtファイルに追加されていません。
私は本当に親プロジェクトのCMakeLists.txtに(ほとんどの親に関係のないプラットフォーム固有の問題に対処する)子プロジェクトのすべてのテストをホイストする必要がありますする必要はありません。
解決
CMakeの2.8新しい外部プロジェクトあなたは別のcmakeのプロジェクトのビルドを駆動するためにカスタムターゲットを作成することができますモジュール。この上のドキュメントは弱いの一種であるが、それはあなたがやりたいかもしれないように見えます。
私はアイデアは(あなたが素敵な、それはあなたのためのSVNやCVSのうちの子プロジェクトをチェックしていてもすることができます!)。子プロジェクトのソースディレクトリにそれを指して、あなたの親プロジェクトからExternalProject_Addをコールすることだと思います