自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(397)
  • 收藏
  • 关注

原创 Drawnix:一款免费开源的白板工具,支持思维导图、流程图、类图和手绘图

Drawnix是一款开源免费的白板工具,支持流程图、思维导图、类图等多种绘图需求。它提供文本驱动(Mermaid/Markdown语法)和可视化拖拽两种绘制方式,满足不同用户习惯。工具具备跨平台适配、自动保存、多格式导出等功能,支持样式自定义和插件扩展。适用于个人创作和团队协作,可通过Docker快速部署或直接在线使用。其核心优势在于将结构化语法输入与灵活的手动编辑相结合,兼顾效率与自由度。

2025-08-18 16:40:24 275

原创 CMake进阶: 配置文件(configure_file)

CMake的configure_file命令用于将模板文件中的变量占位符替换为实际值,生成最终配置文件。它支持变量替换(@VAR@或${VAR}形式)、跨平台适配(路径分隔符和换行符处理)以及动态配置生成。常用场景包括:1)生成含版本信息的头文件;2)创建跨平台脚本;3)仅复制文件(COPYONLY模式)。通过#cmakedefine语法可实现条件编译,且输出文件通常放在构建目录以避免污染源代码。该命令是连接构建配置与源代码的关键工具,能显著提升项目的灵活性和跨平台兼容性。

2025-08-16 12:56:30 891 2

原创 CMake基础:帮助手册的使用

CMake 提供了多种帮助文档查询方式:1. 在线文档(权威完整):访问官网查看最新版或特定版本文档,包含教程、命令手册、模块说明等核心内容。2. 离线文档:安装目录下的 HTML 文件提供本地浏览。3. 命令行帮助(快速查询):- 基础帮助:cmake --help 分类查询:--help-command/--help-module 查看命令/模块 列表查询:--help-command-list/--help-module-list 获取完整清单 版本兼容:--help-policy 查询版本策略

2025-08-16 10:04:04 1312

原创 CMake进阶: externalproject_add用于在构建阶段下载、配置、构建和安装外部项目

externalproject_add是CMake中ExternalProject模块的核心命令,用于在构建阶段集成外部项目(如第三方库)。与FetchContent不同,它在构建阶段处理依赖,适合非CMake项目或需自定义构建流程的场景。支持从Git/压缩包下载源码,并通过CMAKE_ARGS配置参数、BUILD_COMMAND自定义构建步骤等。示例展示了集成fmt库的完整流程,包括目录设置、依赖声明及手动链接库文件。与FetchContent相比,externalproject_add更灵活但配

2025-08-14 23:05:29 710 1

原创 C++中的链式操作原理与应用(三):专注于异步操作延的C++开源库 continuable

continuable是一个现代C++异步编程库,采用header-only设计,支持C++11及以上标准。它通过延续传递风格封装异步操作,提供链式调用then()、统一错误处理catch_()和操作组合(when_all/when_seq)等特性,有效解决回调地狱问题。该库支持与回调函数、std::future和协程等多种异步模型集成,具有轻量级、类型安全等优点。安装只需包含头文件,典型应用场景包括网络请求、文件IO等异步操作。通过CMake配置项目后,开发者可以编写线性结构的异步代码,显著提升可读性和维

2025-08-14 22:35:56 1003

原创 CMake进阶: 使用FetchContent方法基于gTest的C++单元测试

本文介绍了利用CMake的FetchContent模块集成GoogleTest(GTest)进行C++单元测试的方法。主要内容包括:1. FetchContent模块的功能与优势,可自动下载、配置和构建外部依赖项目;2. 关键指令详解:FetchContent_Declare声明项目信息,FetchContent_MakeAvailable执行下载与集成;3. 完整示例展示如何构建测试项目,包括项目结构、CMake配置和测试用例编写;4. 常见问题解决方案,如网络下载失败、多配置生成器问题等;

2025-08-13 22:01:44 1158 3

原创 通信中间件 Fast DDS(一) :编译、安装和测试

本文详细介绍了FastDDS(数据分发服务)在Windows和Linux系统下的编译安装过程。在Windows环境下,通过Visual Studio、CMake和vcpkg工具链完成FastCDR、FoonathanMemory等依赖库的安装,并重点解决了FoonathanMemory安装报错问题。Linux环境下则通过源码编译方式安装,特别处理了麒麟系统中asio库版本不兼容的问题。安装完成后,通过运行HelloWorld示例程序验证了发布-订阅功能的正确性。文章还总结了依赖缺失、版本不兼容等常见问题的解

2025-08-13 22:01:17 3068 5

原创 function2:一个专注于函数对象包装的现代 C++ 开源库

function2是C++的开源函数对象包装库,针对std::function的不足进行了优化。它具有高性能、低开销、非空保证和移动语义支持等特性,提供function(可空)和unique_function(非空)两种包装器。该库采用头文件方式集成,支持栈存储小型函数对象,避免堆分配,调用开销更低。function2适用于高频回调、移动语义依赖等场景,可无缝替代std::function,并与Boost.Asio、Qt等框架结合使用。其独特优势包括:编译期非空检查、完美支持移动语义、更好的类型擦除效率,特

2025-08-12 11:26:42 931

原创 concurrentqueue:一个高并发高性能的C++无锁队列

并发队列是多线程编程中实现线程安全数据共享的核心组件,支持多线程同时进行入队和出队操作。主要实现方式包括基于锁的(如C++的mutex和condition_variable)和无锁(如原子操作和CAS机制)两种。其中,moodycamel::ConcurrentQueue是高性能无锁实现,支持批量操作和任意数据类型;Intel TBB提供优化锁实现;Boost.Lockfree则适合Boost生态项目。选择时需权衡性能、依赖和场景需求,避免重复造轮子。

2025-08-07 22:29:04 707 4

原创 vcpkg: 一款免费开源的C++包管理器

vcpkg是微软开发的跨平台C++包管理工具,支持Windows、Linux和macOS系统,提供2300+开源库管理。核心功能包括自动依赖处理、跨平台一致性、灵活目标配置和主流构建系统集成。安装简单,通过Git克隆仓库后运行bootstrap脚本即可使用。常用命令涵盖库搜索、安装、更新等操作,通过triplet标识管理不同平台架构配置。支持与CMake、Visual Studio项目无缝集成,推荐使用清单模式管理项目依赖。vcpkg通过ports系统定义库元信息,按triplet隔离构建环境,解决C++开

2025-08-06 22:21:55 1169 2

原创 CMake指令:add_test

CMake中的add_test命令用于将测试程序注册到CTest框架,实现测试自动化管理。该命令通过NAME指定测试名称,COMMAND定义执行命令,支持参数、工作目录和环境变量等配置。典型用法包括注册GTest测试程序、设置测试依赖、传递命令行参数等。使用时需先调用enable_testing(),确保测试名称唯一,推荐使用生成器表达式$<TARGET_FILE>引用目标路径。add_test结合ctest命令可实现测试批量运行、结果查看和报告生成,是CMake项目测试体系的核心组件。

2025-08-04 10:56:04 871

原创 CMake指令:mark_as_advanced

CMake中的mark_as_advanced()命令用于控制变量在配置工具中的显示行为,可将指定变量标记为"高级变量",使其默认隐藏,仅在用户启用"显示高级选项"时可见。该命令通过隐藏非必要变量(如内部调试参数、系统路径等)来简化配置界面,同时保留关键变量的可见性。支持清除标记(CLEAR参数)和批量操作,适用于第三方库配置、开发调试变量等场景。需注意该命令仅影响变量显示,不影响实际功能,且不应标记核心配置变量。合理使用能有效提升大型项目的配置界面友好性。

2025-08-02 16:24:34 1044 2

原创 Windows和Linux的tree工具

摘要:tree命令是一款实用的目录树形结构展示工具,适用于Linux和Windows系统。Linux版本功能丰富,支持文件过滤(-P/-I)、层级控制(-L)、大小显示(-h)等高级功能,需手动安装;Windows原生版本功能较基础,仅支持目录展示(/f)和ASCII字符(/a)。两个系统的主要差异在于功能完整性和参数支持度。该工具通过直观的树状结构展示文件层级关系,可有效提升项目结构梳理和文件管理效率,特别适合开发者、运维人员使用。高级用法包括生成JSON/HTML格式输出、结合grep过滤等,是代码阅读

2025-08-01 20:04:08 989

原创 MakeInstaller: 一款麒麟操作系统安装包制作工具

麒麟操作系统推出MakeInstaller工具(星星助手),为国产信创生态提供可视化软件打包方案。该工具支持DEB/RPM/SQUASHFS等多种包格式,自动分析依赖关系,适配飞腾、龙芯等国产架构,可将二进制文件、脚本等资源打包为符合麒麟系统规范的安装包。其可视化界面显著降低打包门槛,支持安装脚本配置、数字签名等高级功能,适用于信创项目适配、企业工具分发等场景。通过自动处理依赖冲突和多架构适配,有效解决国产系统下的软件打包痛点,开发者可通过麒麟官网或社区获取工具及技术支持。

2025-07-31 22:37:11 907 1

原创 minidocx: 在C++11环境下运行的解决方案(二)

本文介绍了在麒麟服务器系统(gcc5.4.0仅支持C++11)环境下改造minidocx(基于C++20的Word操作库)的解决方案。通过将C++20标准降级为C++11,并用Boost库替代不兼容的std::filesystem模块,详细说明了Boost1.80.0的下载、编译安装及环境配置过程。文章提供了修改后的源码下载链接,并验证了改造后的库在低版本gcc下的编译运行效果。最后强调源码改造需结合实际情况评估,仅建议在修改量小、测试充分的情况下采用此方案。

2025-07-31 13:25:59 1083

原创 gTest测试框架的安装与配置

本文详细介绍了gMock(Google Mock)的安装与项目配置方法。主要内容包括:1)准备工作,说明所需编译器和构建工具;2)Linux/macOS和Windows系统的安装步骤,包括源码编译和系统目录安装;3)项目配置指南,演示如何通过CMake在C++项目中集成gMock,包含测试代码示例;4)常见问题及解决方案。gMock作为Google Test框架的扩展,可帮助开发者创建模拟对象进行单元测试。安装过程需确保系统支持C++11标准,并通过CMake正确链接库文件。文章提供了完整的配置流程和测试用

2025-07-29 23:29:21 594 1

原创 CMake进阶: COMMAND 关键字功能总结

CMake中的COMMAND关键字主要有两种用途:1)在if()语句中检查函数/命令是否存在,用于条件判断;2)在add_custom_command()和add_custom_target()中定义构建过程中要执行的命令。前者可用于兼容性检查,后者则用于扩展构建流程,如生成文件、运行脚本等。COMMAND支持系统命令、脚本和项目目标,并能根据平台差异实现跨平台兼容。理解这两种用法是掌握CMake自定义构建逻辑的关键。

2025-07-28 11:34:29 1091 3

原创 CMake指令:include(将脚本中的内容, 如函数、变量、配置等引入当前的构建上下文)

本文详细介绍了CMake中include()命令的基础用法和关键特性。include()用于加载CMake脚本文件或模块,实现代码复用和模块化管理。文章阐述了其基本语法、主要用途(包含自定义脚本、加载内置模块、组织子项目配置、条件包含等),并重点说明了路径搜索规则、作用域可见性和策略隔离等关键特性。同时对比了include()与add_subdirectory()的区别,并给出了避免循环包含、处理可选脚本等实用建议。合理使用include()能有效提升CMake脚本的可维护性,特别适用于大型项目的构建管理。

2025-07-28 11:06:01 1167

原创 CMake进阶: CMake的策略和向后兼容

CMake通过策略机制实现版本兼容性与功能升级的平衡。每个策略(如CMP0048)对应特定行为变更,开发者可灵活选择新旧行为。核心原则包括版本绑定策略、保留旧行为、提供过渡期警告。最佳实践建议明确指定最低版本、渐进式迁移策略、多版本测试。该机制既支持旧项目稳定运行,又便于逐步采用新特性,有效管理技术债务。命令行参数和cmake_minimum_required()可批量控制策略状态,简化兼容性管理。

2025-07-27 17:57:23 712 2

原创 CMake进阶: 编译代码命令(try_compile)

CMake中的try_compile命令是一个强大的工具,用于验证代码片段在特定环境下的编译可行性。它通过创建临时编译环境、执行编译测试并返回结果(成功/失败),广泛应用于检查编译器特性、库兼容性和头文件可用性等场景。文章详细介绍了try_compile的工作原理、基本语法和典型用法,包括检查C++11特性、库链接测试以及头文件存在性验证。通过封装通用函数和对比其他检查工具,展示了try_compile在跨平台项目中的灵活性和重要性,是确保代码可移植性的关键手段。

2025-07-27 12:03:42 888 1

原创 CMake进阶: 检查函数/符号存在性、检查类型/关键字/表达式有效性和检查编译器特性

CMake检测机制全面解析 本文系统介绍了CMake中用于检测系统特性的各类工具。主要内容包括: 功能检测:使用CheckLibraryExists检查库函数、check_c_symbol_exists验证C符号 类型检查:通过CheckTypeSize检测类型大小、CheckCXXTypeExists验证C++类型存在性 编译器支持:CheckCXXCompilerFlag检查编译器标志、CheckLinkerFlag验证链接器选项 这些检测工具构成了CMake跨平台构建的核心能力,可根据不同需求(如检查

2025-07-25 22:23:39 1566

原创 miniz:一个轻量级、高性能的开源压缩库

miniz是一个轻量级开源压缩库,提供ZLIB/GZIP兼容的压缩/解压缩功能。其核心优势在于单文件实现(miniz.c+miniz.h)、跨平台支持和零依赖,编译后仅50-100KB。支持DEFLATE算法、9级压缩控制、CRC32校验及基础ZIP操作,适用于嵌入式系统、游戏开发等资源受限场景。与标准ZLIB相比,miniz体积更小但功能简化,性能良好但更适用于轻量级应用。使用简单,只需包含头文件并编译源文件即可,提供流式处理接口支持大文件操作。

2025-07-25 12:13:09 757

原创 C++异常处理:使用backtrace定位Linux程序的崩溃位置

本文介绍了在嵌入式Linux开发中使用backtrace工具定位程序崩溃的方法。当程序因bug崩溃时,通过signal函数捕获SIGSEGV等信号,在handler中调用backtrace获取调用栈信息,再结合addr2line工具将地址转换为可读的函数名和行号。文章详细讲解了signal、backtrace等关键函数的使用方法,并提供了示例代码和调试步骤。编译时需添加-g选项保留调试信息,运行时可通过gdb或coredump文件进一步分析。该方法能有效解决多人协作开发中难以定位崩溃点的问题,是Linux程

2025-07-23 18:08:21 682 4

原创 CMake进阶:检查头文件存在性(check_include_file 和 check_include_fileCXX)

CMake的check_include_file宏用于检查系统是否存在指定头文件,常用于跨平台开发中判断功能支持情况。该宏通过生成临时测试代码并尝试编译来验证头文件是否存在,结果存入指定变量(1/0)。使用时需先include(CheckIncludeFile)加载模块,可检查C/C++头文件(需用LANGUAGE指定语言),并通过FLAGS添加包含路径。对于C++头文件,推荐使用专门的CheckIncludeFileCXX模块。注意事项包括:处理非标准路径、跨平台路径差异、头文件依赖等问题。相关功能还有c

2025-07-23 16:45:47 954 1

原创 CMake实践:CMake3.30版本之前和之后链接boost的方式差异

本文介绍了CMake 3.30版本前后链接Boost库的主要差异及迁移方法。从Boost 1.70版本开始提供了CMake配置文件(BoostConfig.cmake),支持现代CMake的目标链接方式。CMake 3.30彻底移除了旧的FindBoost模块,强制使用Boost自带的配置文件,通过Boost::xxx目标链接库。文章详细阐述了新旧版本的配置方式、迁移步骤及常见问题解决方案,建议开发者直接使用Boost::system等目标进行链接,确保Boost版本在1.70以上,并注意静态/动态库的链接

2025-07-22 22:25:12 1368 1

原创 pugiXML:一个轻量级、高性能的 C++ XML 解析库

PugiXML是一个轻量级、高性能的C++ XML解析库,具有快速解析、低内存占用和跨平台支持等特点。它支持DOM和SAX两种解析模式,提供类似jQuery的节点选择器,并可通过XPath进行查询。PugiXML采用单文件实现,无第三方依赖,适合嵌入式系统和游戏开发等场景。使用时需包含头文件并配置编译器支持C++11,可禁用STL以适应嵌入式环境。虽然XPath支持有限且不支持XML命名空间,但其简洁API和高效性能使其成为轻量级XML处理的理想选择。

2025-07-19 11:37:43 835 2

原创 CMake指令:常见内置命令行工具( CMake -E )

CMake命令行工具cmake -E提供了一套跨平台的文件操作和系统命令执行功能,可替代传统的shell命令,确保在Windows/Linux/macOS上行为一致。主要用途包括:1)跨平台文件操作(复制、删除、创建目录等);2)安全执行外部程序;3)文件校验(MD5/SHA256);4)流程控制(暂停、计时);5)路径处理和归档压缩。该工具特别适用于CMake脚本和自动化构建流程,能显著简化跨平台开发的复杂度,如统一cp/copy等命令差异,支持递归目录操作和环境变量管理。

2025-07-18 22:23:31 612 2

原创 CMake指令:install命令详解

CMake的install命令用于定义项目构建完成后如何安装目标文件(如可执行程序、库文件)、头文件、配置文件等到指定位置。该命令不会在构建阶段执行,而是在用户显式调用cmake --install时生效。核心功能包括:指定各类文件的安装路径(通过TARGETS、FILES、DIRECTORY等子命令),设置文件权限,支持多配置安装(Debug/Release),以及生成卸载脚本。安装路径通常基于CMAKE_INSTALL_PREFIX变量,CMake还提供了一系列标准路径变量(如BINDIR、LIBDIR

2025-07-18 21:29:18 1305

原创 CMake基础:覆盖项目开发的五大配套工具

CMake提供了五大核心工具:cmake(核心命令行配置工具)、ccmake(终端交互式配置工具)、cmake-gui(图形化配置界面)、ctest(测试执行工具)和cpack(打包分发工具)。这些工具覆盖了从项目配置(支持命令行、终端和GUI三种方式)、编译构建到测试验证和软件打包的全流程。其中cmake是基础引擎,ccmake/cmake-gui提供可视化配置选项,ctest支持自动化测试,cpack可生成多种格式的安装包。这些工具共同构成了CMake项目的完整开发生态链,支持跨平台开发的需求。Wind

2025-07-15 22:41:33 1046 1

原创 Qt .pro中的.pri详解(四)

本文介绍了Qt项目中.pro和.pri文件的作用与使用方法。.pro文件是项目主配置文件,而.pri是私有包含文件,用于模块化配置管理。文章详细说明.pri文件的基本语法、作用及与.pro文件的协作关系,包括变量作用域规则、跨平台开发应用等典型场景。通过分层配置策略和模块化设计,.pri文件能有效提高项目可维护性和代码复用率,实现跨平台支持和构建效率优化。

2025-07-15 21:40:00 748

原创 C++: TypeList(编译期的类型列表)

C++中的TypeList是一种编译期类型数据结构,用于模板元编程中的类型集合操作。摘要如下: 基本概念 TypeList是编译期类型容器,仅存储类型信息而不占用运行时内存 通过模板类实现,如template<typename...Ts> struct TypeList{}; 核心操作 访问:获取类型列表长度、索引特定位置类型 查询:检查类型包含、查找类型索引 修改:追加/删除类型、类型映射转换 组合:连接类型列表、分割列表 典型应用 生成访问者模式实现 工厂模式类型管理 序列化框架开发 类型安

2025-07-13 09:49:32 1040 3

原创 hiredis: 一个轻量级、高性能的 C 语言 Redis 客户端库

hiredis是一个轻量级、高性能的C语言Redis客户端库,支持同步/异步操作、管道和事务。主要特性包括:1)轻量无外部依赖;2)高性能非阻塞I/O;3)完整Redis协议支持;4)线程安全。支持源码编译和包管理器安装,提供连接管理、命令执行等核心API,需注意内存管理和线程安全。适用于缓存系统、实时统计、消息队列等场景。典型用法包括同步命令执行、管道批处理和异步事件驱动操作。使用后需释放回复对象,多线程环境需独立连接或连接池。

2025-07-12 17:21:58 1173 3

原创 C++实践:delete释放void*的问题分析

这篇技术文章分析了C++中一个常见的void指针内存释放函数存在的三个严重问题:1)通过void删除对象导致类型信息丢失,无法调用正确析构函数;2)指针按值传递导致置空无效;3)可能混用delete和delete[]。文章提出了多种改进方案:使用模板保留类型信息、通过引用参数置空指针、区分单个对象和数组释放,并推荐优先使用智能指针实现自动内存管理。此外,还探讨了保留类型信息释放void*指针的5种解决方案,包括回调注册表、包装器、类型标签、虚析构函数和智能指针,比较了各自的优缺点。最终建议遵循RAII原则优

2025-07-12 12:48:34 914

原创 CMake指令:add_custom_command和add_custom_target详解

CMake中的add_custom_command和add_custom_target命令解析: add_custom_command用于定义构建阶段的自定义操作,主要分为两种模式: 生成文件模式(通过OUTPUT指定输出文件),需其他目标依赖该文件才会触发执行; 目标关联模式(通过TARGET),可在目标构建前后执行命令(如POST_BUILD用于编译后操作)。 add_custom_target则创建可直接执行的伪目标,特点包括: 可通过make命令直接调用; 支持ALL选项加入默认构建流程; 常与ad

2025-07-10 21:54:43 1220 3

原创 CMake实践:常见的调试技巧

CMake调试指南总结了多种有效调试方法。1.使用message()命令输出关键信息,推荐STATUS模式保持风格统一;2.通过cmake -L查看缓存变量或删除CMakeCache.txt解决缓存问题;3.利用--trace/--debug-output跟踪执行流程;4.设置CMAKE_FIND_DEBUG_MODE调试依赖查找;5.检查CMakeOutput/Error.log分析编译测试结果。其他技巧包括:验证条件判断、使用VERBOSE输出编译命令、逐步注释代码定位问题等。核心思路是通过变

2025-07-08 11:04:57 993

原创 CMake基础:条件判断详解

CMake条件判断机制详解:通过if/else结构实现灵活构建控制,支持变量检查、数值/字符串比较、文件/路径判断、系统检测等多元条件评估。典型应用包括构建类型配置、功能开关控制、依赖检查等场景。使用时需注意变量引用无需${}、空变量自动判假、字符串区分大小写等细节,推荐使用绝对路径和括号分组确保逻辑准确性。该机制为CMake构建系统提供了动态决策能力,是项目配置管理的核心功能。

2025-07-05 22:08:47 848 2

原创 C++反射之获取可调用对象的详细信息

本文系统介绍了C++中的可调用对象及其类型信息提取技术。主要内容包括:1)可调用对象分类(函数指针、成员函数指针、仿函数、lambda等);2)通过模板元编程实现FunctionTraits来提取函数签名信息(返回值类型、参数类型等);3)应用场景分析(函数包装器、信号槽机制、反射等);4)C++17/20新特性(is_invocable、concepts)的应用。文章详细讲解了利用模板特化和SFINAE技术实现类型特征萃取的方法,并提供了完整的代码示例,对理解C++泛型编程和元编程具有重要参考价值。

2025-07-03 22:45:24 764 4

原创 银河麒麟系统上利用WPS的SDK进行WORD的二次开发

本文介绍了在Linux系统下安装WPS Office并进行二次开发的方法。首先从官网下载.deb安装包,使用dpkg和apt工具安装,并处理可能的依赖问题。接着获取WPS二次开发示例代码,用Qt Creator编译运行。文章重点展示了四个关键功能代码:初始化WPS应用程序、新建文档、插入表格和另存为文档的操作实现,提供了完整的API调用示例。最后给出了WPS开放平台和相关开发资源的参考链接,为开发者提供了完整的WPS Linux版二次开发解决方案。

2025-06-30 22:22:53 1150 12

原创 CMake指令:目标属性相关指令(target_xxx)

本文系统介绍了CMake构建系统中常用的目标设置指令及其应用场景。主要内容包括: 二进制目标构建:通过add_executable和add_library创建可执行文件和库文件目标。 目标链接设置:详解target_link_libraries指令的PRIVATE/PUBLIC/INTERFACE三种链接模式及其区别,特别强调链接顺序的重要性。 编译选项配置:包括宏定义设置(add_compile_definitions)、编译参数(add_compile_options)及其目标级版本(target_co

2025-06-29 20:03:48 1130 5

原创 银河麒麟系统GCC5.4.0升级到GCC9.3.0指南

本文详细介绍了在银河麒麟服务器V4系统上从gcc5.4.0升级到gcc9.3.0的完整过程,以满足minidocx开源库对C++20的支持需求。主要内容包括:环境准备(下载gcc9.3.0源码及依赖库)、配置编译选项、编译安装(约1.5小时)、系统gcc版本替换、版本验证等关键步骤。同时提供了常见问题解决方案,如磁盘空间不足、权限问题、动态库路径错误等。通过设置环境变量和软链接,最终实现gcc9.3.0的成功安装,并保留原gcc5.4.0版本。该指南对在国产操作系统上进行编译器升级具有重要参考价值。

2025-06-29 13:27:48 1079 1

C++继承多接口,调用虚函数跳转到错误接口的虚函数的奇怪问题demo

C++继承多接口,调用虚函数跳转到错误接口的虚函数的奇怪问题,一个示例的dmeo

2024-04-11

浮点数与十六进制转换工具

 在 C/C++中,使用浮点方式存储实数,用两种数据类型来保存浮点数: foat(单精度)和double(双精度)。float在内存中占4字节,double在内存中占8字节。由于占用空间大,double可描述的精度更高。这两种数据类型在内存中同样以十六进制方式存铺,但写大类型有所不同。         整型类型是将十进制转换成二进制保存在内存中,以十六进制方式显示。浮点类型并不是将一个浮点小数直接转换成二进制数保存,而是将浮点小数转换成的二进制码重新编码,再进行存储。C/C++的浮点数是有符号的。         在C/C++中,将浮点数强制转换为整数时,不会采用数学上四舍五人的方式,而是食弃掉小数部分,不会进位。         浮点数的操作不会用到通用寄存器,而是会使用浮点协处理器的浮点寄存器,专门对浮点数进行运算处理。

2024-01-22

C++设计模式例程,工厂模式例子

C++设计模式例程,工厂模式例子,环境是VS2019打开即可运行 工厂模式也是平时我们编程用的比较多的一种行为设计模式,它提供了一种创建对象的最佳方式。工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。工厂模式属于创建型模式,它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离。 作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。

2024-01-15

高质量 C++编程指南,编程的好书籍

前言......................................................................................................................................6 第 1 章 文件结构....................................................................................................................8 1.1 版权和版本的声明........................................................................................................8 1.2 头文件的结构 ....................................................................................................

2023-12-26

C++模板函数重载规则详解

模板函数重载匹配规则,他规定着,当我们调用一个具有多个重载的模板函数时,该选择哪个函数作为我们的调用对象。与普通函数的重载类似,但是模板属性会增加一些新的规则。 模板函数重载匹配规则可以引用《c++ primer》中的一段话来总结: 对于一个调用,其候选函数包括所有模板实参推断成功的函数模板实例。 候选的函数模板总是可行的,因为模板实参推断会排除任何不可行的模板。 与往常一样,可行函数(模板与非模板)按类型转换 (如果对此调用需要的话)来排序。当然,可以用于函数模板调用的类型转换是非常有限的。 与往常一样,如果恰有一个函数提供比任何其他函数都更好的匹配,则选择此函数。 但是,如果有多个函数提供同样好的匹配,则: 如果同样好的函数中只有一个是非模板函数,则选择此函数。 如果同样好的函数中没有非模板函数,而有多个函数模板,且其中一个模板比其他模板更特例化,则选择此模板。 否则,此调用有歧义。 看着有点不知所以然,我们一条条来看。这里我给整个过程分为三步: 第一步:模板函数重载匹配会将所有可行的重载列为候选函数。 ...

2023-12-26

sscom 串口调试工具

SSCOM串口调试助手是一款串口通讯软件,在这款软件中主要帮助用户在电脑中对串口进行管理和设置;软件能在任意串口中设置参数,并提供数据的接收、发送等操作,让用户能更加方便轻松的对其管理;软件界面简洁,可以通过十六进制的方式来进行数据转换,操作流程十分的方便,上手难度极低,十分好用。 软件特色 1、SSCOM还支持多种发送方式,如单次发送、循环发送、分段发送等; 2、能够满足不同需求场景的使用要求; 3、SSCOM的独立性较高,支持在没有Python等其他软件的环境下使用,更加方便了用户的使用操作。 软件优点 1、在使用SSCOM时,我们只需将串口设备连接到电脑上; 2、并在SSCOM中选择对应的串口号和通讯协议,设置好波特率等参数,即可开始使用; 3、在数据接收时,我们可以进行数据的实时监控和记录,并且支持数据的导出; 4、在数据发送时,我们可以通过简单的设置实现数据的快速发送和测试。

2023-12-20

NetAssist 网络调试工具

NetAssist,就是网络助手,可以模拟网络之间的通信,互相发送消息 网络调试助手是一款用于Android端网络调试的工具,支持TCP,UDP协议,支持机器自带的串口(可能需要root权限)支持多种网络端口的链接,让网络维修人员或者是个人能够更加简单的对网络进行深度的调试,从而让整个网络更加的符合用户在使用上面的需求,如果你需要的话这款自带中文的调试软件能够满足你的需求。 网络调试助手(NetAssist)软件功能 支持TCP Server,TCP Client, UDP 支持机器自带的串口 支持USB转串口 Esp Touch配网 以对话形式显示通信数据,支持同时建立多个连接 16进制格式数据发送

2023-12-20

基于C++CORBA高级编程

全书共22章,系统地介绍了CORBA的基本体系和概念,IDL语义和映射为C++的规则、POA和对象生命周期,CORBA机理和ORB,动态CORBA特性以及CORBA重要的服务程序。本书的独到之处在于它不仅介绍概念及资源,更重要的是讲述超越API的CORBA内部机制

2023-12-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除