31

2 つのプロジェクトがあり、どちらも CMake を使用しています。ここで、プロジェクトの 1 つをライブラリとして別のプロジェクトに含めたいと考えていますが、スタンドアロン プロジェクトとしてコンパイルする機能は維持したままです。

これまでに行ったことは次のとおりです。バージョン管理システムを使用して、親プロジェクトのサブディレクトリにある子プロジェクトのコピーを複製します。「add_subdirectory」を使用して、子プロジェクトの CMakeLists.txt を親プロジェクトに含めました。また、子プロジェクトの一部のターゲットの名前を変更することで、ターゲット間の名前の競合を修正しました。

ただし、私が実行している問題は、子プロジェクトのさまざまな構成テストが実行されていないように見えることです。たとえば、子プロジェクトは FindThreads モジュールを使用して、使用可能な同期プリミティブを判別します。親プロジェクトはスレッド化の問題を認識していないため、これに関連するテストはありません。同様に、子プロジェクトには、親プロジェクトでは必要のないヘッダーなどのさまざまなテストがあります。これらのテストはどれも実行されていないようであり、これらのテストで定義されたシンボルは CMakeCache.txt ファイルに追加されていません。

親プロジェクトの CMakeLists.txt に、子プロジェクトのすべてのテスト (主に、親に関係のないプラットフォーム固有の問題を処理する) を巻き上げる必要はありません。

4

1 に答える 1

19

CMake 2.8 では、新しい外部プロジェクトモジュールが追加されました。これにより、別の CMake プロジェクトのビルドを駆動するカスタム ターゲットを作成できます。これに関するドキュメントはちょっと弱いですが、あなたが望むことをするかもしれません.

親プロジェクトから ExternalProject_Add を呼び出して、子プロジェクトのソース ディレクトリを指すようにすることが考えられると思います (子プロジェクトを SVN または CVS からチェックアウトすることもできます)。

于 2009-11-25T11:32:33.417 に答える