首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

共享库使用链接器构建,并将执行链接的两个阶段。这意味着我们将收到带有正确段头、段和段头表的文件(图 6.1)。 共享库(也称为共享对象)可以在多个不同的应用程序之间共享。...我们可以期待,当使用上述任一方法找到库CMake 会自动创建构建目标,这是方便且优雅的。我们还讨论了依赖 Git 及其子模块和克隆整个仓库的方法。...Catch2 这个由 Martin Hořeňovský维护的框架,对于初学者和小型项目来说非常棒。这并不是说它不能处理更大的应用程序,只要你记住,只要记得在需要额外工具的区域会有所需要。...当然,如果你能使用现代 C++(是的,C++11 不再被认为是“现代”的),那么推荐使用更新的版本。在与 Catch2 合作,你应该选择一个 Git 标签并在你的列表文件中固定它。...多年来,我发现当我接近 1,000 行代码,逐渐变得难以跟踪测试中执行了哪些行和分支,哪些没有。超过 3,000 行后,几乎是不可能的。大多数专业应用程序将拥有比这更多的代码。

22700

CMake 秘籍(三)

在本章中,我们将介绍以下内容: 创建一个简单的单元测试 使用 Catch2 库定义单元测试 定义单元测试并链接到 Google Test 定义单元测试并链接到 Boost 测试...在本配方中,我们将使用 CMakeCatch2 结合,测试在前一个配方中介绍的求和代码。...CMake 提供了三种选项来在构建执行自定义命令: 使用add_custom_command生成要在目标内编译的输出文件。...为了检索和使用这些文件,必须在构建解压缩存档。这是通过使用 CMake 命令本身与-E标志来实现的,以实现平台独立性。下一个命令更新提取文件的时间戳。我们这样做是为了确保我们不会处理陈旧的源文件。...生成器表达式在这个第二阶段评估,并可用于使用只能在生成知道的信息调整构建系统。

44020

图森未来-算法后端平台二面(pass)

使用CMake或Make管理项目的优点包括: 自动化构建CMake和Make都能自动化处理构建过程,减少了手动编写构建脚本的需求,使得项目构建更加便捷和高效。...灵活性和可维护性:CMake使用CMakeLists.txt文件来描述构建过程,具有更高的灵活性和可维护性。...CMake还提供了丰富的功能和工具,例如变量、条件判断、文件操作等,可以方便地处理复杂的构建逻辑。而Make使用Makefile文件描述构建过程,虽然也具有一定的灵活性,但相比CMake略显不足。...社区支持:CMake得到了广泛的社区支持,很多开源项目都使用CMake作为构建工具,因此可以方便地找到相关的文档、教程和第三方库。而Make虽然也有一定的社区支持,但相比CMake略显不足。...集成测试工具:CMake可以方便地集成测试工具,例如Google Test、Catch2等,使得测试更加便捷和自动化。而Make则需要手动编写测试脚本。

15510

微软正式发布 Visual Studio 2022!香得一腿~

Visual Studio 安装程序以及独立构建工具使用 在调试器下运行时,新的热重载现在可用于本机 C++ 应用程序。...它支持 MSBuild 和 CMake 项目。 现在可以在 WSL2 上本地构建和调试,而无需建立 SSH 连接。支持跨平台 CMake 项目和基于 MSBuild 的 Linux 项目。...这允许你在 CMake 项目中构建目标的子集。 CMake 项目中的项目菜单已经过简化,并提供了 “删除缓存和重新配置” 和 “查看缓存” 的选项。...使用 C++ 工作负载的游戏开发现在安装支持 Visual Studio 2022 的最新虚幻引擎 在为来自导入的模块和 Header 单元的类型提供导航和语法突出显示,对 C++ IntelliSense...在使用 Visual Studio 调试器,热重载现在可供 C++ 开发人员使用

2.7K20

微软正式发布 Visual Studio 2022

Visual Studio 安装程序以及独立构建工具使用 在调试器下运行时,新的热重载现在可用于本机 C++ 应用程序。...它支持 MSBuild 和 CMake 项目。 现在可以在 WSL2 上本地构建和调试,而无需建立 SSH 连接。支持跨平台 CMake 项目和基于 MSBuild 的 Linux 项目。...这允许你在 CMake 项目中构建目标的子集。 CMake 项目中的项目菜单已经过简化,并提供了 “删除缓存和重新配置” 和 “查看缓存” 的选项。...使用 C++ 工作负载的游戏开发现在安装支持 Visual Studio 2022 的最新虚幻引擎 在为来自导入的模块和 Header 单元的类型提供导航和语法突出显示,对 C++ IntelliSense...在使用 Visual Studio 调试器,热重载现在可供 C++ 开发人员使用

2.6K30

项目篇之手把手100行写一个简易版Mutex

它提供了一种简单而有效的方式来确保在多线程并发访问,只有一个线程可以同时访问受保护的资源,从而避免数据竞争和不一致性。...基于 POSIX 标准的信号量库实现,包含 Catch2 单元测试,附带了基于 Catch2 框架的单元测试,用于验证互斥锁的正确性和稳定性,使用bazel编译,google编码规范。...其中涉及C++知识(RAII、信号量、lock_guard、线程安全编程),还能学习以下内容: 1.Bazel构建系统:了解如何使用Bazel来管理和构建C++项目。...Bazel是一种高效、可扩展的构建工具,可用于管理复杂的项目结构、依赖关系和构建流程。 2.Catch2测试框架:掌握如何使用Catch2来编写单元测试。...Catch2是一个功能强大且易于使用的C++测试框架,可以帮助你编写清晰、可读性高的测试用例,提高代码质量和可靠性。 3.原子操作:了解原子操作的概念和使用方法。

13830

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

同时做两者的项目比较少见,但并非完全罕见——一些应用程序提供独立的 SDK 或支持插件创建的库。另一种情况可能是提供其使用示例的库。本章我们将要构建的项目在一定程度上适合最后一类。...我们将通过回顾章节列表、回顾其内容,并选择其中描述的技巧和工具来开始规划,以构建我们的计算应用程序: 第1章,CMake 的初步步骤: 第一章为我们提供了关于 CMake 的基本信息——如何安装它以及如何使用其命令行构建准备好的项目...此外,在本章中,我们讨论了两个测试框架:Catch2 和 GTest 带 gMock;对于这个项目,我们将使用后者。为了获得清晰的覆盖信息,我们将使用 LCOV 生成 HTML 报告。...》,我们可以使用 CMake 捕获一些构建的值,并通过模板文件将它们提供给 C++代码——例如,使用一个方便的 C++结构体: chapter-12/01-full-project/cmake/buildinfo.h.in...让我们继续讨论前面提到的测试和分析程序的主题。 测试与程序分析 程序分析与测试相辅相成,确保我们解决方案的质量。例如,当使用测试代码,运行 Valgrind 变得更加一致。

7100

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

它教会您如何在 CMake 项目中使用 CMake,并展示使其可维护、优雅和干净的原因。它引导您通过许多项目中出现的复杂任务的自动化,包括构建测试和打包。...C++构建应用程序需要很长时间,而且确实做到了。...CMake测试、打包和安装视为构建过程的固有部分。 旧的、未使用的特性会被弃用,以保持 CMake 的轻量级。 CMake 为整个平台提供了一致、简化的体验。...更重要的是,CTest 标准化了使用 CMake 构建的解决方案的测试运行和报告。这意味着作为用户,你不需要知道项目使用的是哪个测试框架或如何运行它。...项目和 CTest 命令将在我们引入与构建目标相关的概念(第三章,设置你的第一个 CMake 项目)和测试框架(第八章,测试框架)讨论。

58901

Linux平台:Alexa语音服务快速入门指南

,但是要求: PortAudio v190600_20161030 GStreamer 注意: 示例应用程序使用或禁止唤醒词,如果在没有唤醒词的情况下构建,则示例程序将禁用免提模式 音乐提供之的依赖关系...选项,使用以下命令:-LH Sensory 如果使用Sensory唤醒词,版本要求5.0.0-beta.10.2 或更高版本 这是一个cmake命令构建Sensory的例子 cmake <absolute-path-to-source...,用来控制端口进出的数据包),启用这个测试,使用 CMake这个选项 cmake -DNETWORK_INTEGRATION_TESTS=ON –...中的alexa.umdl,确保KITT.ai集成测试的正常运行 运行示例程序 注意: 需要使用PortAudio和GStreamer进行构建 在运行示例程序之前,请注意应用程序需要的两个参数,第一个是必须的...> 运行cmake之后,运行make install安装这个SDK 库和头文件将被安装到指定的目录,另外,生成AlexaClientSDK.pc,可以在支持pkg-config.系统上使用 使用SDK构建应用程序

2K20

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

大家好,我是道哥,今天我为大伙儿解说的技术知识点是:【使用 cmake构建跨平台的动态库和应用程序】。...这篇文章,主要是把视频中的示例代码进行简化,只使用一个动态库和一个可执行文件,使用cmake构建工具,演示在 Windows 和 Linux 这两个平台下的构建过程。...本文的内容很基础,算是使用 cmake构建跨平台程序的入门教程吧!...当这个动态库被应用程序(myapp)使用的时候,myapp.c在 include mylib.h 的,关闭宏 MYLIB_EXPORT,此时下面这个宏就生效: #define MYLIB_API _...打开 VSCode,然后打开测试代码文件夹 cmake_demo: 因为需要使用cmake工具来构建,所以需要在VSCode安装 cmake 插件。

2.5K20

又有新框架上线了,测试、AI 通通有「GitHub 热点速览」

具有以下特点: 有一个遵循 NumPy 规范的 Python API,还有一个功能齐全的 C++ API,与 Python API 高度相似; 支持自动微分、自动矢量化和计算图优化的可组合函数转换; 动态图构建...:MLX 中的计算图是动态构建的; 多设备支持,可运行在 CPU 和 GPU 上; 统一内存,数组、矩阵数据存在共享内存中; GitHub 地址→github.com/ml-explore/mlx 2.2...测试框架:Catch2 本周 star 增长数:550+,主语言:C++ Catch2 主要是一个用于 C++ 的单元测试框架,但它也提供了基本的微基准测试和简单的 BDD 宏。...虽然它兼容 Windows、macOS 等操作系统,但是它是一个 Linux 优先应用,如果你使用 Linux 系统可以更早地体验到新功能。...有了它,你可以像使用谷歌控制台一样开始远程调试。

22310

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

True) 构建测试 运行cmakecmake-gui以配置项目,然后使用所选的构建工具进行构建。...此设置将存储在缓存中,因此用户不必每次在构建目录上运行CMake设置该值。 下一个更改是使构建和链接MathFunctions库成为布尔选项。...对于多配置工具,请使用--config参数指定配置。 验证已安装的Tutorial可以运行。 测试支持 接下来,测试我们的应用程序。...这是CTest测试的基本形式。 下一个测试使用PASS_REGULAR_EXPRESSION测试属性来验证测试的输出是否包含某些字符串。在这种情况下,验证在提供了错误数量的参数是否打印了用法消息。...对于do_test的每次调用,都会基于传递的参数将另一个测试添加到项目中,该测试具有名称,输入和预期结果。 重新构建应用程序,然后cd到二进制目录并运行ctest -N和ctest -VV。

1K00

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

只有当我们从项目中外部使用,这个目录才应该存在。它提供了其他项目在编译将消耗的公共头文件。我们将在第五章*,使用 CMake 编译 C++源代码中回到这个主题,构建我们自己的库。...第二个命令给您更多的自由,因为您可以确保代码不仅编译成功,而且执行也正确(您可以潜在地测试regex是否工作)。当然,这对于交叉编译场景不起作用(因为主机无法运行为不同目标构建的可执行文件)。...在 CMake 中,我们可以构建的最基本目标是一个单一的二进制可执行文件,它包含了一个完整的应用程序。...单元测试私有类字段的常见陷阱 一些在线资源建议在单元测试使用特定的-D定义与#ifdef/ifndef指令的组合。...单元测试应该只测试公共接口中方法是否如预期工作,并将底层实现视为黑盒机制。我建议你只在万不得已使用这个方法。 使用 git 提交跟踪编译版本 让我们考虑一下在了解环境或文件系统详情方面有益的用例。

25100
领券