如何将本地Qt项目与Google Test集成?

时间:2019-10-16 11:37:25

标签: qt cmake googletest qmake

我正在尝试将Google Test集成到我的Qt项目中。我已经在Google Test上运行了基本的(EXPECT_EQ(1, 1))测试,但是对于如何将自己的Qt项目(使用qmake)集成到测试的CMake构建中感到困惑。

当前使用推荐的README中的推荐CMakeLists.txt添加了Google测试。我想将我的本地src添加到测试版本中。我的src位于(相对于测试文件夹)../src/,并且我已经将src内置于(相对于测试文件夹)build/project-build/,但是我相信它不会集成,因为该项目具有{{ 1}}。当我尝试将其集成为子目录时出现错误:

.pro

这是我将其作为子目录添加到我的CMake Error at CMakeLists.txt:31 (add_subdirectory): The source directory /home/project/src does not contain a CMakeLists.txt file. 中的方式:

CMakeLists.txt

在单独的add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/../../src ${CMAKE_CURRENT_BINARY_DIR}/project-build EXCLUDE_FROM_ALL) 中(类似于Google测试的方式):

CMakeLists.txt.in

另外,请告诉我这是否是测试项目的困难方法。我本来希望使用Google测试,但如果这样不起作用,则可能会使用Qt测试。我对C ++相当陌生,对C ++单元测试也很陌生(熟悉Java和JUnit)。感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

使用add_subdirectory()时,添加的源子目录(调用的第一个参数)中必须有一个CMakeLists.txt文件。该目录通常包含要构建的代码文件,但是它们将由CMake而不是qmake构建。因为您尝试混合使用两种构建方法,所以有一些方法可以简化操作:

  1. 您可以首先使用CMake构建Google Test框架,然后使用qmake将相关的GTest包含/库拉入本地src构建。有一个不错的示例here详细记录了其中的一些步骤。
  2. 根据本地src的大小/范围,您可以将Qt项目转换为使用cmake而不是qmake构建。有一些有用的答案herehere来说明如何将qmake项目转换为CMake项目。这样,CMake可以处理Google Test和本地src构建。
  3. 采用建议的方法,并使用Qt的内置测试框架而不是Google Test框架。