これは私の現在のディレクトリ構造です:
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 */
現在機能しているのは次のとおりです。
projectFolder/ext/gtest
cmake と ninja でファイルをビルドするprojectFolder
cmake と 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を使用しています