2017-04-17 17 views
0

私は5つのプロジェクトを含む大きなCMakeソリューションを持っています。この1つのプロジェクトでは、メイン実行可能ファイルを作成し、残りの4つ(静的+ 1動的)プロジェクトはメインプロジェクトにリンクされたライブラリを作成します。CMakeソリューションのサブディレクトリ

MainSolution: 
|-MainExecutablePrj 
|-StaticLib_1Prj 
|-StaticLib_2Prj 
|-StaticLib_3Prj 
|-DynamicLib_1Prj 

プロジェクト全体がWindowsおよびLinuxプラットフォームの両方のために構築されます。今度は、MainSolutionの下にSubディレクトリを作成し、DynamicLib_1(.lib/.so)を使用するいくつかのテストケースプロジェクトを作成する必要があります。今まで私が行ったことは、各テストケースごとに異なるソリューションを用意し、必要な.hファイルと.lib(.so)ファイルをコピーし、テストケースソリューションを構築することです。

私はソースコードを維持するのが非常に難しく、ダイナミックライブラリに変更があるときは、必要なファイルをすべてコピーして、テストケースを再構築する必要があります。 私はテストケースのソリューションを私のメインプロジェクトの中に含めることで、ダイナミックライブラリプロジェクトを変更するたびにテストケースプロジェクトを構築するようにしました。

これらのテストケースソリューションをMainSolutionのプロジェクトとして追加することは非常によくわかっていますが、サブディレクトリを作成してそのフォルダの下にすべてのテストケースプロジェクトを配置したいと考えました。

MainSolution: 
|-TestCasesFolder 
    |-TestCase_1Prj 
    |-TestCase_2Prj 
    |-... 
|-MainExecutablePrj 
|-StaticLib_1Prj 
|-StaticLib_2Prj 
|-StaticLib_3Prj 
|-DynamicLib_1Prj 

誰かがすべてのファイルをコピーする必要はありません。この

+0

だけのテストケースに必要なライブラリに 'target_link_library'します。彼らはあなたが図書館に変更を加えるたびに作成されます。 –

答えて

0

で私を助けることができます。

  • CMakeのはfind_libraryで構築されたライブラリを見つけるとサブディレクトリのパスにヒントを追加してみましょうフォルダ
  • CMakeのはinclude_directoriesであなたのサブプロジェクトからヘッダファイルをインクルードしてみましょうを構築します。プレフィックスを追加してプラットフォームに依存しないようにします。

テストについて: サブプロジェクトのすべての単体テストは、このプロジェクトの構造内の場所で、ルートプロジェクトではありません。すべての統合テストをルートプロジェクトに配置するか、別のテストプロジェクトをルートプロジェクトの一部として配置します。

Example Structure

関連する問題