【问题标题】:Building tests with CMake while not using CTest在不使用 CTest 的情况下使用 CMake 构建测试
【发布时间】:2011-08-02 08:30:37
【问题描述】:

这是我想做的:

  • 输入 make all 将构建我的库和它的文档。
  • 输入 make test 将构建我的库(如有必要)、gtest,然后是我的测试
  • 如果需要,键入 make check 会运行 make test,然后运行可执行文件

现在我只设法让第一个工作。 我遇到的问题是 gtest 的条件包含。

Gtest 使用了很好的 CMake,理论上我需要做的就是将 gtest 目录包含在 add_subdirectory 中,但之后总是会构建 gtest。

我现在的结构是:

CMakeLists.txt(在这里我为 doc 和库添加目标) doc(我的 doxygen 文档) 包括(我的标题) lib(我编译的库所在的位置) src(我的 .cpp 文件所在的位置) 测试 CMakeLists.txt(在这里我为 gest 和我的测试添加目标) bin(测试可执行文件所在的位置) contrib (其中 gtest 是) src(我的测试)

我试图弄清楚如何将 gtest 作为依赖项添加到 test-target 但不是每次都构建 gtest。

我真的很生气,关于学习 CMake 的信息很少甚至没有,所以如果有人知道任何深入的教程(可在互联网上免费获得),那就太棒了。

【问题讨论】:

  • 如果您知道这一点,您是否有兴趣帮助我将其添加到 C++ 库项目模板 (code.google.com/p/cpp-library-project-template) 中? (subversion 代码目前使用 gmock/gtest 和 glog,尽管发布的版本使用 unittest++。目前,它一直构建测试,并在运行“make”时执行测试)。
  • 哇,现在感觉有点傻。诀窍是做add_subdirectory(contrib/gtest EXCLUDE_FROM_ALL)add_executable(test EXCLUDE_FROM_ALL foo.cpp)

标签: cmake googletest


【解决方案1】:

诀窍是执行add_subdirectory(test EXCLUDE_FROM_ALL),然后 CMakeList.txt 中的任何目标都不会添加到 ALL 目标中。

【讨论】:

    猜你喜欢
    • 2010-10-18
    • 2020-01-27
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    相关资源
    最近更新 更多