私は2つのプロジェクトがあり、どちらもCMakeを使用しています。今では、スタンドアロンプロジェクトとしてコンパイルする機能を維持しながら、プロジェクトの1つを別のライブラリの中にライブラリとして含めたいと考えています。cmakeプロジェクトを別のプロジェクトの中に埋め込む?
これまでに行ったことは次のとおりです。バージョン管理システムを使用して、親プロジェクトのサブディレクトリにある子プロジェクトのコピーを複製します。私は "add_subdirectory"を使って、子プロジェクトのCMakeLists.txtを親プロジェクトに含めました。そして、私は、子プロジェクトのいくつかのターゲットの名前を変更して、ターゲット間の名前の衝突を修正しました。
しかし、私が実行している問題は、子プロジェクトのさまざまな構成テストが実行されていないように見えることです。たとえば、子プロジェクトはFindThreadsモジュールを使用して、使用可能な同期プリミティブを判別します。親プロジェクトはスレッドの問題を認識していないため、これに関連するテストはありません。同様に、子プロジェクトには、ヘッダーなどのさまざまなテストがあり、親プロジェクトでは不要です。これらのテストは実行されていないように見え、これらのテストで定義されたシンボルはCMakeCache.txtファイルに追加されていません。
親プロジェクトのCMakeLists.txtにすべての子プロジェクトのテスト(主に親とは関係のないプラットフォーム固有の問題を処理する)をすべて持ち上げる必要はありません。
最近、私は外部プロジェクトと一緒に作業していました。 gitサブプロジェクトを使用しているので、ExternalProject_Addに外部プロジェクトをダウンロードしたりインストールしたりしないように指示する必要があります。これは、ダウンロードとインストールのコマンドを空の文字列に設定することによって行うことができます。 – Talin