14

这是我想做的事情:

  • 打字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 的信息很少甚至没有,所以如果有人知道任何深入的教程(可在互联网上免费获得),那就太棒了。

4

1 回答 1

9

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

于 2011-04-11T19:23:29.253 回答