- 博客(48)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 C++包管理工具:conan2交叉编译配置
Conan交叉编译配置指南:通过profile文件实现多平台支持 摘要: 本文介绍了如何使用Conan进行交叉编译开发,重点说明了profile文件的配置方法。首先介绍了如何查看和修改Conan的profile文件路径,并提供了一个典型的ARM平台交叉编译profile示例,包含编译器路径、系统根目录等关键设置。文章还列出了Conan 2.16.1版本的核心配置项和构建工具配置选项,包括缓存路径、下载设置、编译标志等参数,为开发者进行多平台编译提供了详细参考。通过合理配置这些参数,可以灵活实现不同目标平台的
2025-07-24 09:53:42
442
原创 如何安装CMake较新的版本
本文详细介绍了在不同操作系统上安装最新版CMake的多种方法。对于Linux系统,推荐通过Kitware官方仓库安装(自动更新依赖),也可选择预编译二进制包或源码编译安装。Windows用户可直接下载官方.msi安装包,macOS建议使用Homebrew安装。文章还提供了验证安装、处理多版本共存和权限问题的注意事项。建议Linux优先使用Kitware仓库,Windows/macOS使用官方安装包,安装后通过cmake --version确认版本。
2025-07-22 22:18:30
249
原创 一站式现代 C++ 项目开源工具集锦
本文整理了现代C++项目开发中的高质量开源库,涵盖并发队列、线程池、命令行解析、单元测试、网络编程、日志系统、配置文件解析、序列化和进程间通信等核心模块。推荐的库如concurrentqueue、CTPL、argparse、spdlog、nlohmann/json等都具有轻量、高性能、跨平台等特点,能显著提升开发效率和系统性能。文章建议按需组合这些组件,使用CMake构建和现代包管理工具,为项目现代化改造提供参考。这些活跃维护的开源库可帮助开发者避免重复造轮子,构建稳定可靠的C++应用。
2025-07-18 14:17:50
966
原创 替代标准库:实用 C++ 开源组件推荐
本文推荐了多个C++标准库组件的开源替代方案,适用于兼容老版本或跨平台项目。主要推荐包括:ghc::filesystem(文件系统)、tl::optional(可选值)、fmt(格式化)、date(日期处理)和tl::expected(错误处理)。这些库多为header-only实现,支持C++11及以上,与标准库高度兼容,便于后续迁移。文章还补充了类型反射、元编程等实用工具库,并建议通过包管理器集成。这些方案能帮助开发者在保持兼容性的同时,提前使用现代C++特性。
2025-07-18 14:10:37
464
原创 C++包管理工具:conan2常用命令详解
conan new 命令用于快速创建项目模板,支持多种预定义模板(如 CMake、Autotools 项目)和自定义 Jinja2 模板,可通过参数自定义包名、版本和依赖项。conan remove 命令用于删除本地缓存或远程仓库中的软件包,支持通过模式匹配删除特定版本或二进制包,提供确认选项、LRU清理和试运行模式,可从JSON列表批量删除。
2025-07-11 17:13:00
868
原创 使用Kahn算法处理节点依赖关系
本文介绍了基于Kahn算法的拓扑排序实现,用于解决插件开发中的依赖顺序问题。算法采用unordered_map<string, set<string>>表示节点依赖关系,通过构建邻接表和入度表实现排序。关键步骤包括:初始化数据结构、队列处理零入度节点、动态更新子节点入度,以及环检测。文章提供了完整的C++代码示例,并总结了接口设计要点,包括输入格式、邻接表、入度表等核心组件的作用和实现方式。最后提出并行化处理、动态更新支持和字典序输出等优化建议,平衡功能需求与性能考量。该实现能有效检
2025-07-05 17:44:51
815
原创 C++包管理工具:conan2持续集成 (CI) 教程
您可以将此列表视为“级别 (levels)”列表,在级别 0 中,有不依赖于任何正在构建的其他包的包,在级别 1 中有仅依赖于级别 0 中的元素的包,依此类推。请注意,在此示例中,我们为了方便使用 Debug 和 Release 作为不同的配置,但在实际情况中,这些将是不同的配置,例如 Windows/X86_64、Linux/x86_64、Linux/armv8 等,并在不同的计算机上运行。这并不总是可取的,甚至不可能,在许多情况下,更可取的是进行分布式构建,以实现更快的构建和更好地利用 CI 资源。
2025-06-28 11:24:52
1100
原创 C++包管理工具:conan2使用教程
摘要: 本节为Conan 2的实践教程,指导用户从零开始构建依赖zlib的C项目。主要内容包括: 基础使用:通过CMake项目示例演示如何通过conanfile.txt声明依赖,使用conan install下载/构建zlib,并集成到CMake构建流程中; 工具管理:利用tool_requires声明构建工具(如CMake 3.22.6),通过生成的环境脚本隔离工具链; 多配置支持:通过修改配置文件或命令行参数,切换Debug/Release构建类型及静态/动态链接方式; 高级特性:后续将介绍conanf
2025-06-25 20:45:14
758
原创 C++包管理工具:conan2介绍
摘要:Conan 是一个开源、去中心化的 C/C++ 包管理器,支持全平台(Windows/Linux/macOS等)和所有构建系统(CMake/Make/Visual Studio等)。其核心优势包括:1)完整的二进制管理,可创建多配置预编译包;2)私有仓库支持,通过Artifactory CE或内置服务器托管私有包;3)稳定兼容,承诺2.X版本无破坏性变更;4)活跃社区支持,包括8000+ GitHub星标和ConanCenter公共仓库。适用于嵌入式/移动/服务器等全场景开发,显著提升C/C++项目构
2025-06-25 20:39:48
1180
原创 深入浅出 libuv 的设计哲学与应用场景
libuv 是一个跨平台的异步 I/O 库,最初为 Node.js 开发,支持事件驱动的编程模型。它提供了对 I/O 轮询机制的高级抽象,包括句柄、流、文件 I/O 和线程功能。本文介绍了 libuv 的环境搭建步骤,包括克隆仓库、使用 CMake 构建和安装。此外,还提供了一个简单的 TCP 服务器示例,展示了如何使用 libuv 处理客户端连接、读取数据和回显消息。通过事件循环和回调机制,libuv 能够高效地管理异步操作,适用于高性能的网络应用开发。
2025-05-16 10:20:00
122
原创 Poco C++全面开发指南:开发环境搭建
POCO(全称POrtable COmponents)是由Applied Informatics Software Engineering开发的开源C++库,是一组开源C++类库集合,它的设计理念是“简单易用”和“模块化”,让我们能够快速构建高性能的应用程序,特别是以网络为中心的可移植跨平台应用程序。这些库与C++标准库完美集成,填补了其留下的许多功能空白。
2025-04-28 09:25:31
291
原创 Fast DDS快速上手:编写一个简单的C++发布者和订阅者应用
本节详细说明了如何通过C++ API分步创建一个包含发布者(publisher)和订阅者(subscriber)的简单Fast DDS应用程序。
2025-04-20 12:41:47
397
原创 解锁C++ gRPC:快速入门指南
gRPC(gRPC Remote Procedure Calls)是一种现代远程过程调用(RPC)框架,支持客户端与服务器应用之间的高效通信。
2025-04-18 16:46:23
461
原创 在 Windows 平台构建使用ZeroMQ
ZeroMQ是一个高性能的异步消息库,常用于分布式系统或网络通信。我们在C++编程时可以使用ZeroMQ 的 C++ 绑定库cppzmq开发需要消息传递功能的应用程序,cppzmq是ZeroMQ的C++绑定,允许在C++项目中使用ZeroMQ的功能。
2025-04-18 11:04:08
503
原创 Snowflake 算法的实现
snowflake 算法的核心思想是使用 41bit 作为毫秒数,10bit 作为机器的 ID(比如其中 5 个 bit 可作为数据中心,5 个 bit 作为机器 ID),12bit 作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是 0。单机上 ID 单调自增,毫秒数在高位,自增序列在低位,整个 ID 是趋势递增的。ID 可能不是全局递增,虽然 ID 在单机上是递增的,但是由于涉及到分布式环境下的每个机器节点上的时钟,可能会出现不是全局递增的场景。
2025-03-25 11:11:40
310
原创 Stopwatch的简单实现
Stopwatch 是一个简单计时器类,用来测量代码的执行时间。它可以用来跟踪某个任务或一系列任务的执行时间,常用于性能调优或监控任务的耗时。C++ 中的 库提供了一种高精度且类型安全的方式来处理时间。
2025-02-28 14:57:20
235
原创 ScopeGuard的简单实现
ScopeGuard 提供一个局部作用域的守护函数, 当ScopeGuard生命结束时自动执行预设的守护函数,类似于std::lock_guard<>对于std::mutex的处理。
2025-02-27 14:50:47
191
原创 oneTBB的编译使用
oneAPI Threading Building Blocks(oneTBB)是一个支持使用标准ISO C++代码进行可扩展并行编程的库。
2024-12-26 11:04:53
479
原创 嵌入式系统中文件传输模块的设计
本文设计了主从设备间的双向文件传输协议,包含两种流程模式:1)主设备发起传输(文件上传)和2)从设备发起传输(文件下载)。两种模式均采用握手-数据传输-校验的三阶段流程,但数据结构存在差异:上传时主设备发送文件大小,下载时由主设备返回文件大小;数据传输包结构也互为镜像。协议定义了包括文件模块标识、分片大小、数据偏移等关键字段,并使用16字节校验数据确保完整性。流程图清晰展示了两种模式下的交互时序,为嵌入式系统文件传输提供了标准化解决方案。
2024-08-27 16:00:23
735
C++用C#封装的COM组件的方式调用SapRfc函数
2018-06-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人