合理的设置 libcurl 几种超时参数

使用 libcurl 发送 HTTP 请求时根据业务需求需要对不同场景设置不同的超时时间,但 libcurl 提供了多种使请求超时的机制,不同的机制有不同的使用场景,一旦使用错误或未进行正确配置可能会导致一些出乎意外的情况。 总超时libcurl 提供了对单个请求的总超时时间设置,即 CURLOPT_TIME...

cmake-conan 2.0 接入指南

Conan 2.0 版本已经发布很久了,配套的 cmake-conan 工具也同时得到了更新,在原有 Conan 1.x 版本上增强了功能,对开源项目和公司内部已有的 CMake 项目非常友好,接入简单。本文主要介绍 cmake-conan 的应用场景以及交叉编译的实战。 cmake-conan 新特性如果你尚未...

使用 CMakePresets.json 简化 CMake 项目初始化繁杂步骤

痛苦本地开发需要输入参数太多刚开始做纯 C++ 跨端的项目时,为了考虑项目的统一工程化管理选择使用 CMake + Conan,因为各平台下使用的工具链、 IDE 都不一样。如 Windows 更多人习惯使用 Visual Studio IDE、针对 iOS 和 macOS 的开发更多人喜欢使用 Xcode,而 ...

macOS 应用正确签名并公证后分发依然提示“无法验证开发者”

问题现象应用使用正确的证书签名并使用 Apple 推荐的新公证手段公证后,将应用分发给其他人使用时,依然提示无法验证开发者,如下图所示: 问题结论先说结论,各位看到文章可以先检查,如果你的情况并不是这种原因,在参考下面的排查思路。 原因是 CMake 工程使用 Unix Makefile 而未使用 Xc...

Qt6 QML 中渲染自定义视频帧的改进 2023-05-30 更新

最近在升级音视频的项目 Qt 版本,从 5.15.0 升级到 6.4.3(6.5 也一样),除了一些 QML 中删除了一些 Qt Quick Controls 1 的控件以外,最重要的就是自定义视频渲染的改进。 QAbstractVideoSurface 变为 QVideoSinkQt5 中在 QML 上渲染自...

量化你团队的代码质量

在疫情背景下各大公司都有所异动,toB 的团队企业内卷也越来越明显。此时此刻如果团队中的产品又出现各种低级问题无疑是雪上加霜。本文围绕团队在产品质量攻坚工作中做的一些质量检查手段,介绍如何让你团队的代码质量可以量化,并保留最珍贵、可维护、可持续、可传承的工程化代码。 整合目标本文除了让大家了解这些工具如何使用以...

Jenkins pipeline macOS agent 报错:cmake: command not found

在一台 macOS 的 anget 中,我们的 pipeline 脚本一直报错:cmake: command not found,但实际系统中已经通过 brew 安装过 cmake。并且在系统中通过使用命令 cmake --version 也能显示正常版本。那是不是 cmake 所在的目录并不在 Jenkins ...

使用 Conan、CMake 组织跨平台 Qt 工程

创建 Qt 工程时,我们通常使用 Qt 提供的 Online installer 安装 Qt Creator 和 Qt 库来创建、编译、发布 Qt 项目,这对开发环境和 CI Agent 环境有较强的要求,一旦环境安装不对或者安装时缺少了一些组件,可能导致无法编译出产物。最近一段时间,Qt 也拥抱 Conan,使...

CMake 自动安装 git pre-commit hooks

在日常开发中,我们经常通过各类 IDE 工具来自动修正代码风格,但由于部分 IDE 工具与 clang-format 配合不是特别完善,导致保存或者按下分号、冒号以后代码自动格式化导致错乱,或者格式化时间过长等问题。这在日常开发中是很难让人接受的。 那么我们有没有办法在开发过程中不去让 clang-format ...

主流编辑器、IDE 开启 clang-format 自动格式化能力

clang-format 是 LLVM 下的一款代码风格格式化工具,它支持多种代码格式化风格,如:Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit。团队中也可以根据配置定义自己的代码格式化风格保存到 .clang-format 配置文件中并放在项目工程目...