首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

学习了CC++,居然不了解Cmake这一利器

CMake 是一个跨平台的自动化建构系统,可以用简单的命令来控制软件编译过程。下面是一个关于如何使用 CMake 进行项目配置和编译的教程。...再使用 add_test 命令添加测试用例,指定测试的名称和测试命令、参数。在构建编译完成后使用 ctest 命令行工具运行测试。...COMMAND test_add 10 24 34 指定了测试运行时将要执行的命令和参数,即当运行 ctest 命令时,test_add 程序将被执行,传入 10、24 和 34 作为命令行参数。...&& cd - cd cmake-demo && ctest && cd -:执行单元测试 cd cmake-demo:切换当前工作目录到 cmake-demo 构建目录; ctest:在构建目录中运行...CTest,CTest 是 CMake 的测试驱动程序,用于运行项目中的测试。

15510

面向 C++ 的现代 CMake 教程(三)

幸运的是,CMake 在适应不同风格和依赖管理的历史方法的同时,还能跟上行业批准标准的不断演变。...自动化测试确保新的更改不会意外地破坏我们的程序。在本章中,我们将学习测试的重要性以及如何使用与 CMake 捆绑的 CTest 工具来协调测试执行。...CTest 能够查询可用的测试、过滤执行、洗牌、重复和限制时间。我们将探讨如何使用这些特性、控制 CTest 的输出以及处理测试失败。...使用 CTest 在 CMake 中标准化测试 为 CTest 创建最基本的单元测试 单元测试框架 生成测试覆盖率报告 技术要求 您可以在 GitHub 上的以下链接找到本章中存在的代码文件...既然我们已经了解了如何在许多不同场景下执行ctest,那么让我们学习如何添加一个简单的测试。 为 CTest 创建最基本的单元测试 技术上讲,编写单元测试可以在没有任何框架的情况下进行。

67200
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CMake 秘籍(七)

    Sphinx 引言 文档在所有软件项目中都是必不可少的:对于用户,解释如何获取和构建代码,并说明如何有效地使用您的代码或库,对于开发者,描述库的内部细节,并帮助其他程序员参与并贡献于您的项目。...本章将展示如何使用 CMake 构建代码文档,使用两个流行的框架:Doxygen 和 Sphinx。...project=cmake-cookbook):) 它是如何工作的 工作流程的高层次概览显示,CTest 运行测试并将结果记录在本地 XML 文件中。...请注意我们如何使用CTEST_CMAKE_GENERATOR选项传递要使用的生成器,如下所示: $ ctest -S dashboard.cmake -D CTEST_CMAKE_GENERATOR="...project=cmake-cookbook") set(CTEST_DROP_SITE_CDASH TRUE) 相应的dashboard.cmake脚本是对前一个食谱的简单改编,以适应 TSan: set

    20300

    CMake 秘籍(三)

    在本食谱中,我们将介绍使用 CTest 进行单元测试,CTest 是作为 CMake 一部分分发的测试工具。...测试将使用 CTest 中的-VV选项运行,以从单元测试可执行文件获取输出: $ mkdir -p build $ cd build $ cmake .. $ cmake --build . $ ctest...我们邀请你也尝试执行以下命令,以探索单元测试框架提供的选项: $ ./cpp_test --help 它是如何工作的 由于 Catch2 是一个单头文件框架,因此不需要定义和构建额外的目标。...在本食谱中,我们将演示如何使用 CMake 和 Google Test 框架实现单元测试。与之前的食谱不同,Google Test 框架不仅仅是一个头文件;它是一个包含多个需要构建和链接的文件的库。...Boost 测试是 C++社区中另一个非常流行的单元测试框架,在本示例中,我们将演示如何使用 Boost 测试对我们的熟悉求和示例代码进行单元测试。

    60320

    【gtest】 C++ 的测试框架之使用 gtest 编写单元测试

    前言 gtest 是 Google 开发的一个用于 C++ 的测试框架,广泛应用于编写和运行单元测试,并且支持任何类型的测试,而不仅仅是单元测试。...模拟初学者指南 (Mocking for Dummies)- 教你如何创建模拟对象并在测试中使用它们。 模拟秘籍 (Mocking Cookbook) - 包含常见模拟用例的技巧和方法。...build 是构建目录的路径,指定了 CMake 在build 路径下执行构建操作。 3. cd build && ctest cd build 进入构建目录。...ctest 会查找构建目录中的测试,并执行它们。 显示如下内容: 恭喜!你成功地构建并运行了一个使用 GoogleTest 的测试二进制文件。...接下来,我们将解释如何编写一个测试程序,从单个断言级别开始,逐步构建到测试和测试套件。 1.1 断言(assertions) 断言(assertions)是类似函数调用的宏。

    2.5K10

    【使用指南】用Docker编译和测试PaddlePaddle

    这个脚本调用 cmake 和 make 来编译 /paddle 里的源码,结果输出到 /paddle/build,也就是本地的源码树根目录里的 build 子目录 docker run --rm -v.../paddle/build; ctest" 如果编译的时候我们用了 WITH_GPU=OFF 选项,那么编译过程只会产生 CPU-based 单元测试,那么我们也就不需要 nvidia-docker 来运行单元测试了...我们只需要: docker run --rm -v $PWD:/paddle paddle:dev bash -c "cd /paddle/build; ctest" 有时候我们只想运行一个特定的单元测试...这样如果遇到问题,其他人可以复现问题以便帮助 另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了 ?我可以选择不用Docker吗? 当然可以。...这可以帮您省掉花一小时安装和配置各种开发工具,以及切换机器时需要新安装的辛苦。别忘了 PaddlePaddle 更新可能导致需要新的开发工具。更别提简化问题复现带来的好处了 ?我可以用 IDE 吗?

    1.6K100

    我对单元测试和测试驱动开发的见解

    单元测试优点 我们可以集中精力针对于一个特定的工作单元进行测试,排除其它逻辑干扰,使编写测试更加容易。如果测试失败,也能很快锁定哪里出现缺陷。...TDD 的好处 严格根据TDD思维,遵循SOLID原则 开发能保证代码质量 TDD 确保了代码与业务需求高度一致性 TDD 鼓励创建更简单、针对性更强的库和API TDD 要落实测试单元,需要鼓励与业务方持续沟通...理解测试驱动开发的理念,能让我们编写更漂亮的代码倒是真的。 TDD 如何完成软件开发 TDD 的三个阶段: 红灯阶段 编写贴合需求的测试代码,尽量保证覆盖需求每个点。...绿灯阶段 编写适当代码,使测试通过。合理命名一个方法名,然后简短完成方法。可能一个范湖bool型的方法只写一个返回代码。 重构阶段 这个阶段是真正完成业务逻辑的阶段。...如果我们的代码让我们很难测试,我相信他大概率也不是好的代码。 以上,我的理解。学无止境,望高人指点一二,向大佬学习。

    81920

    万字总结编译利器CMake,从入门到项目实战演练

    CMake是我非常喜欢且一直使用的工具。它不但能帮助我跨平台、跨编译器,而且最酷的是,它帮我节约了太多的存储空间。特别是与水银结合起来使用,其友好的体验,足以给我们这些苦逼码农一丝慰藉。...如果你读完仍觉得意犹未尽,可以继续学习我在文章末尾提供的其他资源。 1.2CMake指南教程(官方地址) CMake教程提供了逐步指南,涵盖了CMake可以帮助解决的常见构建系统问题。...了解示例项目中各个主题如何协同工作将非常有帮助。示例的教程文档和源代码可在CMake源代码树的Help/guide/tutorial目录中找到。每个步骤都有其自己的子目录,其中包含可以用作起点的代码。...导入一个CMake项目(消费者) 本示例说明项目如何查找生成Config.cmake文件的其他CMake软件包。 它还显示了在生成Config.cmake时如何声明项目的外部依赖关系。...本节将学习如何配置生成各种平台上的安装包,包括二进制安装包和源码安装包。为了完成这个任务,我们需要用到 CPack ,它同样也是由 CMake 提供的一个工具,专门用于打包。

    1.3K00

    从一个 issue 出发,带你玩图数据库 NebulaGraph 内核开发

    如何 build NebulaGraph?如何为 NebulaGraph 内核做贡献?即便是新手也能快速上手,从本文作为切入点就够了。...第一次构建时,为了节省时间、内存,我关闭了测试 -DENABLE_TESTING=OFF: mkdir build && cd build cmake -DCMAKE_CXX_COMPILER=$TOOLSET_CLANG_DIR...用同样的方式也可以知道新加的一个函数需要如何在里边实现基于 gtest 的单元测试。 开始改代码 在修改代码之前,确保在最新的 master 分支之上创建一个单独的分支。...CTest 本次 PR 提交中,我修改的函数代码同一层级下的单元测试 CTest 就有问题。问题发生的原因有多种,可能是测试代码本身、代码变更破坏了原来的测试用例、测试用例发现代码修改本身的问题。...我们要根据 CTest 失败的报错进行排查和代码修改。

    58520

    使用 Docker 构建 Nebula Graph 源码

    Nebula Graph 介绍 Nebula Graph 是开源的高性能分布式图数据库。项目使用 C++ 语言开发,cmake 工具构建。...其中两个重要的依赖是 Facebook 的 Thrift RPC 框架和 folly 库. 由于项目采用了 C++ 14 标准开发,需要使用较新版本的编译器和一些三方库。...使用 cmake 构建 Nebula 工程 docker> mkdir _build && cd _build docker> cmake .. && make -j2 docker>...ctest # 执行单元测试 提醒 Nebula 项目目前主要采用静态依赖的方式编译,加上附加的一些调试信息,所以生产的一些可执行文件会比较占用磁盘空间,建议小伙伴预留 20G 以上的空闲空间给 Nebula...在列表中添加 https://dockerhub.azk8s.cn 和 https://reg-mirror.qiniu.com 。

    91640

    我所理解的Remoting(3):创建CAO Service Factory使接口和实现相互分离

    我们知道对于Remoting,有两种不同的Activation模式:Server Activation和Client Activation。...他我在前面的系列文章中分析、比较了这两种不同激活方式的区别:Marshaling方式,远程对象创建的时机,状态的保持,生命周期的管理。...在编程模式方面Server Activation和Client Activation也具有一定的差异:为一个SAO(server activated object)和一个CAO(client activated...所以我们一般从Service中把相对静态的Contract(可以简单地把 Contract看成是Service提供的所有操作的列表和调用的接口)提取出来,作为双方交互的契约:Client只要满足这个Contract...那么如何为一个远程调用从另一个AppDomain中获取一个远程对象的引用并创建Proxy呢?而这个获取的方式本身也是一个远程调用。

    53470

    面向 C++ 的现代 CMake 教程(一)

    第八章,测试框架,描述了如何将最流行的测试框架添加到您的项目中,以及如何使用 CMake 工具集中的 CTest 工具。...更重要的是,CTest 标准化了使用 CMake 构建的解决方案的测试运行和报告。这意味着作为用户,你不需要知道项目使用的是哪个测试框架或如何运行它。...我相信了解如何使用宏和函数语句定义自己的命令将帮助您以更程序化的风格编写更干净的代码。我们还分享了一些关于如何更好地组织代码和提出更易读名称的想法。...我们还学习了如何分割和包含列表文件,发现了几种其他有用的命令。我相信有了这些材料,我们准备好迎接下一章,并在 CMake 中编写我们的第一个项目。...我相信了解如何使用宏和函数语句定义自己的命令将帮助您以更程序化的风格编写更干净的代码。我们还分享了一些关于如何更好地组织代码和提出更易读名称的想法。

    1.3K01

    赛题解析:如何设计和实现自适应的负载均衡

    通常,server 池规模巨大且服务容量各不相同,受网络、内存、CPU、下游服务等各种因素影响,一个 server 的服务容量始终处于动态变动和趋于稳定的状态,如何设计和实现这种系统的负载均衡算法是一个极具挑战的难题...自适应负载均衡是指无论系统处于空闲、稳定还是繁忙状态,负载均衡算法都会自动评估系统的服务能力,进行合理的流量分配,使整个系统始终保持较好的性能,不产生饥饿或者过载、宕机。...显而易见,Random并不是符合赛题要求的自适应算法。 那么,如何实现自适应负载均衡呢??️接下来我们将利用题目给出的条件由浅入深的描述这个算法的设计过程。...自适应算法首先要解决如何对服务进行容量评估的问题。 本次比赛按照硬件规格不同,Provider 被分为 small、medium、和 large 三种,CPU 和内存对应的比例为 1:2:3 。...在算法的实现和调优过程中,应该尽量避免产生线程池异常,减少排队。如何结合好程序和硬件的限制,区分出不同阶段的瓶颈,做出符合实际的容量评估是赛题的第一个难点。

    94610

    cmake基础示例:如何编译【跨平台】的动态库和应用程序

    大家好,我是道哥,今天我为大伙儿解说的技术知识点是:【使用 cmake 来构建跨平台的动态库和应用程序】。...在很久之前,曾经在B站上传过几个小视频,介绍了在Windows和Linux这两个平台下,如何通过cmake和make这两个构建工具,来编译、链接动态库、静态库以及可执行程序。...这篇文章,主要是把视频中的示例代码进行简化,只使用一个动态库和一个可执行文件,使用cmake构建工具,演示在 Windows 和 Linux 这两个平台下的构建过程。...根据不同的平台,定义相应的宏,并且添加了mylib和myapp这两个子文件夹。...(如何安装 VSCode 插件就不赘述了) 第一步: cmake 配置 按下键盘 ctrl + shift + p,在命令窗口中选择 Cmake: Configure,如果没看到这个选项,就手动输入前面的几个字符

    3.2K20

    CMake学习笔记(一)——CMake官网教程

    CMake学习笔记(一)——CMake官网教程 前言: 经历了一星期痛苦的交叉编译,笔者深刻认知到Linux下make的重要性。...给自己设置的第一课,就是先学习一下CMake官网提供的入门教程。 CMake官网教程地址:https://cmake.org/cmake-tutorial/ 一. 基本开始 1....添加版本号并配置头文件 我们要假的第一个特征,是给我们的可执行文件和工程提供一个版本号。当你可以独自在源代码中做到这些,那么在CMakeLists.txt中写入版本号可以提供更高的灵活性。...安装与测试 这一步骤中,我们将向我们的工程中添加安装规则和测试支持。 安装规则很简单直接。...这时候输入make install,工程将安装合适的头文件、库文件和可执行文件。其中,CMake变量CMAKE_INSTALL_PREFIX被用来定义安装文件的根目录。

    4.3K80
    领券