这是我当前的目录结构:
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
文件夹中。然后,我希望能够在我从项目build
文件夹中使用 cmake 和 ninja 时编译谷歌测试,有效地为我拥有的每个项目创建单独的二进制文件,而不必在项目的目录树中拥有源文件(二进制文件将被创建新在项目文件夹的子目录中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 上运行狮子