【问题标题】:Is there a qmake equivalent of cmake's ExternalProject是否有与 cmake 的 ExternalProject 等效的 qmake
【发布时间】:2017-11-08 15:22:51
【问题描述】:

我想弄清楚如何在我的项目中包含 googletest。因此,我阅读了README 以获取安装说明。就像我理解的那样,添加库总是有三个选项:

  1. 静态链接
  2. 动态链接
  3. 直接将源代码包含到您的项目中。

我猜

这是通过将 GoogleTest 源代码提供给 主构建并使用 CMake 的 add_subdirectory() 命令添加它。”

意味着直接将源代码包含到您的项目中,因此是选项 3。

他们提到实施选项 3 的最佳方法是:

使用 CMake 下载 GoogleTest 作为构建配置的一部分 步。这只是稍微复杂一点,但没有 其他方法的局限性。

他们通过使用名为 ExternalProject 的 cmake 功能来做到这一点:

cmake_minimum_required(VERSION 2.8.2)

project(googletest-download NONE)

include(ExternalProject)
ExternalProject_Add(googletest
  GIT_REPOSITORY    https://github.com/google/googletest.git
  GIT_TAG           master
  SOURCE_DIR        "${CMAKE_BINARY_DIR}/googletest-src"
  BINARY_DIR        "${CMAKE_BINARY_DIR}/googletest-build"
  CONFIGURE_COMMAND ""
  BUILD_COMMAND     ""
  INSTALL_COMMAND   ""
  TEST_COMMAND      ""
)

据我了解,这样做的好处是它会在构建项目时自动搜索更新。不幸的是,我对cmake一无所知。与 qmake 相比,cmake 的语法很糟糕。所以我问:

有没有相当于cmake的ExternalProject的qmake?

【问题讨论】:

  • 不是你问的,但 Qt 确实支持 CMake 作为构建系统。

标签: c++ cmake googletest qmake


【解决方案1】:

是的,它是SUBDIRS
详情请见documentation。

在子目录中,您可以创建 *.pro 文件,该文件将构建 gtest 作为库。 如果我没记错的话,您只需构建两个文件 gtest-all.cc 和 gmock-all.cc 并添加各自的包含目录。

gtest 很棒,但是对于使用信号和插槽的 Qt,QT 测试库也应该可以完成这项工作。

【讨论】:

  • 但是它可以通过指向 github 的链接包含一个项目并自动使库保持最新吗?据我了解,这是关于 cmake 外部项目的很酷的事情,或者?
  • AFAIK gtest-all.cc 和 gmock-all.cc 由脚本自动生成(它结合了其他来源)并且始终是最新的。因此,如果您只构建这两个,它将始终是最新的。
  • 对不起,我有点误解你了。现在我看到您指的是 CMake ExternalProject_Add 功能。遗憾的是,Qt pro 文件中没有等价物,但您可以使用 git 子模块功能(或树)来弥补这一点。
  • 也许你可以这样回答?那我就可以接受了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 2016-03-26
  • 2014-09-29
  • 2014-12-19
  • 2021-04-30
  • 2010-09-08
  • 2013-02-04
相关资源
最近更新 更多