首页 > 解决方案 > 如何使用 cmake 在 C++ 中进行快速检查(基于属性的测试)?

问题描述

我想在我正在研究的 C++ 库中进行一些基于属性的测试,并且正在考虑使用 RapidCheck,除非有人有更好的主意。(例如,我需要生成任意std::set<int>,如果我可以在int集合的范围和集合的大小上设置界限,那就更好了。)

说了这么多,我还是个 cmake 新手。RapidCheck 中似乎没有任何说明,只是将其作为源代码的一部分包含在内(尽管下载它会更好)。我已经到了可以在我的代码中包含 RapidCheck 的标头的地步,但是当我尝试使用 RapidCheck 构建任何应用程序时,我被告知缺少 RapidCheck 的符号或缺少 rapidcheck 库。

我假设我必须将 RapidCheck 本身构建为项目的一部分以生成库,但我不完全确定如何执行此操作,而且似乎很难找到任何执行此操作的示例。

是否有人对完成此类事情的示例有任何建议,以便我可以看到构建第 3 方 API 所需的命令字符串,并在构建可执行文件时包含库,或者 - 甚至更好 - 使用 RapidCheck 的项目示例确实是这样吗?缺乏关于如何设置的文档令人沮丧。

我希望这不是过于模糊。总而言之,我想从 cmake 做些什么:

  1. 最好下载 RapidTest(尽管直接从 RapidTest 项目中包含文件也可以)。
  2. 运行所需的命令并设置必要的变量以使我的测试代码(在 中${PROJECT_SOURCE_DIR}/test)能够访问 RapidTest 标头。
  3. 生成(如有必要)RapidTest 库并制作它,以便我可以将其链接到我正在运行的测试。

提前感谢您提供的任何帮助!

标签: c++cmakec++17property-based-testing

解决方案


这可能不是正确的方法,但也许会有所帮助:

我能够通过执行以下操作来完成此工作:

# from within the root of the rapidcheck repo:
$ cmake -DBUILD_SHARED_LIBS=true -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug .
# Leave off the BUILD_SHARED_LIBS flag if you don't need an SO.
$ make

构建:librapidcheck.solibrapidcheck.a,然后您可以根据需要复制/安装。

您还需要include带有用于快速检查的标题的目录,但这只是在源代码树中。

使用您想要的任何构建工具将包含路径添加到您的编译命令,并链接到已编译的库(.so.a


推荐阅读