3

これは私の現在のディレクトリ構造です:

projectFolder/CMakeLists.txt
projectFolder/src       /* holds all project .cpp files */
projectFolder/include   /* holds all header files*/
projectFolder/test      /* holds all test .cpp files*/
projectFolder/ext/gtest /* holds all files associated with googletest, 
                           including it's CMakeLists.txt file */

現在機能しているのは次のとおりです。

  1. projectFolder/ext/gtestcmake と ninja でファイルをビルドする
  2. projectFoldercmake と ninja でファイルをビルドする

欠点は、googletest が私のプロジェクトのサブディレクトリにあることです。つまり、プロジェクトごとにソース ファイルを複製する必要があります。

私がやりたいことは、プロジェクト ディレクトリ ツリーから googletest のソース ファイルを削除し、それを3rdPartyフォルダーに移動することです。次に、プロジェクト フォルダー内から cmake と ninja を使用するたびに Google テストをコンパイルできるようにしbuildて、プロジェクトのディレクトリ ツリーにソース ファイルを配置しなくても、プロジェクトごとに個別のバイナリを効果的に作成できるようにしたいと考えています (バイナリは新しく作成されます)。プロジェクトのbuildフォルダのサブディレクトリにあります。)

プロジェクト フォルダーの外に移動するgtestと、次のエラーが発生します。

When specifying an out-of-tree source a binary directory 
must be explicitly specified.

でバイナリディレクトリを指定するadd_subdirectory(${EXT_PROJECTS_DIR}/gtest ${CMAKE_CURRENT_BINARY_DIR}/gtest)と、

ninja: error: 
    'gtest/src/googletest-build/libgtest.a', needed by 
    'google-test-examples_test', missing and no known rule to make it

googletest を にリンクしようとしましfind_packageたが、cmake で googletest が見つかりません。また、find_packageプロジェクトごとにバイナリを再コンパイルするときに、誰かがこれを検証または反論できるかどうかもわかりません。

私はライオンを実行しているMacを使用しています

4

0 に答える 0