c++ - 如何使用 cmake 在 C++ 中进行快速检查(基于属性的测试)?
问题描述
我想在我正在研究的 C++ 库中进行一些基于属性的测试,并且正在考虑使用 RapidCheck,除非有人有更好的主意。(例如,我需要生成任意std::set<int>
,如果我可以在int
集合的范围和集合的大小上设置界限,那就更好了。)
说了这么多,我还是个 cmake 新手。RapidCheck 中似乎没有任何说明,只是将其作为源代码的一部分包含在内(尽管下载它会更好)。我已经到了可以在我的代码中包含 RapidCheck 的标头的地步,但是当我尝试使用 RapidCheck 构建任何应用程序时,我被告知缺少 RapidCheck 的符号或缺少 rapidcheck 库。
我假设我必须将 RapidCheck 本身构建为项目的一部分以生成库,但我不完全确定如何执行此操作,而且似乎很难找到任何执行此操作的示例。
是否有人对完成此类事情的示例有任何建议,以便我可以看到构建第 3 方 API 所需的命令字符串,并在构建可执行文件时包含库,或者 - 甚至更好 - 使用 RapidCheck 的项目示例确实是这样吗?缺乏关于如何设置的文档令人沮丧。
我希望这不是过于模糊。总而言之,我想从 cmake 做些什么:
- 最好下载 RapidTest(尽管直接从 RapidTest 项目中包含文件也可以)。
- 运行所需的命令并设置必要的变量以使我的测试代码(在 中
${PROJECT_SOURCE_DIR}/test
)能够访问 RapidTest 标头。 - 生成(如有必要)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.so
和librapidcheck.a
,然后您可以根据需要复制/安装。
您还需要include
带有用于快速检查的标题的目录,但这只是在源代码树中。
使用您想要的任何构建工具将包含路径添加到您的编译命令,并链接到已编译的库(.so
和.a
)
推荐阅读
- python - 从 xlsx 导入持续时间/将对象转换为持续时间
- server - 如何将本地端口绑定到 HTTPS?
- oracle - ORACLE MD5 函数的不同输出与相同输入
- python - 使用 Python 从 PDF 文件中提取标题、副标题和段落
- php - 有没有更短的方法来防止通过未设置的数组“循环”?
- pandas - 绘制具有 3 个特征的箱线图
- reactjs - 如何在 React 中使用 axios 解决获取请求?
- amazon-s3 - 在基于非日期分区的动态帧中检索数据
- laravel - Laravel:向客户端发送数据透视数据
- amazon-dynamodb - 如何获取扫描 dynamodb 表返回的项目的大小?