将googletest源文件移到directory-tree之外

时间:2013-09-10 19:44:37

标签: c++ c cmake googletest

这是我目前的目录结构:

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. 使用cmake和ninja
  2. projectFolder/ext/gtest中构建文件
  3. 使用cmake和ninja
  4. projectFolder中构建文件

    不满意的是googletest位于我项目的子目录中,这意味着我必须为每个项目复制其源文件

    我想要做的是从项目目录树中删除googletest的源文件,然后将其移至3rdParty文件夹。然后,当我在项目build文件夹中使用cmake和ninja时,我希望能够编译google测试,有效地为我拥有的每个项目创建单独的二进制文件,而无需在项目的diretory树中包含源文件(二进制文件将在项目的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上运行狮子

0 个答案:

没有答案