c++ - 如何使用cmake进行C++快速检查(基于属性的测试)?

标签 c++ cmake c++17 property-based-testing

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

话虽这么说,我还是有点cmake newb。 RapidCheck中似乎没有任何说明,只是将其包括在源代码中(尽管下载会更好)。我已经到了可以在代码中包含RapidCheck header 的地步,但是当我尝试使用RapidCheck构建任何应用程序时,都被告知RapidRapid缺少符号或Rapidcheck库丢失了。

我假设必须将RapidCheck本身作为生成库的项目的一部分进行构建,但是我不确定如何做到这一点,而且很难找到完成此过程的任何示例。

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

我希望这不要太含糊。总结一下,我想从cmake做些什么:

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

  • 预先感谢您可能提供的任何帮助!

    最佳答案

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

    通过执行以下操作,我可以使此工作正常进行:

    # 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,您可以根据需要复制/安装它们。

    您还需要带有 header 的include目录,以进行快速检查,但这仅在源代码树中。

    使用所需的任何构建工具将include路径添加到编译命令中,并链接到已编译的库(.so.a)

    关于c++ - 如何使用cmake进行C++快速检查(基于属性的测试)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56668990/

    相关文章:

    c++ - 如何在不复制的情况下从 vector 中读取值?

    c++ - 为什么允许重新定义全局运算符 new(size_t)?

    c++ - 如何在 cmake 工具链文件中为已知的自定义编译器设置编译功能以使用 target_compile_features

    cmake:将库添加到所有目标

    c++ - 没有 Emscripten,如何使用标准库将 C++ 编译为 WebAssembly

    c++ - std::sort() 中使用了哪种类型的排序?

    c++ - 当我的计算机中有两个 OpenCV(相同版本)时,如何选择在 CMakeLists.txt 中使用哪个 OpenCV?

    c++ - 将大型堆栈分配数组作为函数参数传递会导致堆栈溢出

    c++ - 有没有办法在 C++17 中创建编译时类型映射以进行类型检查?

    Visual Studio 中基于 C++17 广义范围的 For 循环