主页

tfs备份问题

前言 在添加TFS备份任务时,我遇到了如下几个问题: TF401009:Azure DevOps 服务账户 NT AUTHORITY\LOCAL SERVICE 无法访问网络共享。请更改为可访问备份路径的账户。 SQL实例“XXXXX”上的数据库“XXXXXX”正在使用简单恢复模式,该模式不能用于拆功能键所有 Azure DevOps 数据库的事务一致性备份。所有Azure DevOps 数据库都必须使用完整恢复模式来创建备份计划。 TF401002: SQL Server 数据库引擎未能将数据库备份保存到路径 \xxxxx\source_backup。 请向 SQL 服务帐户授予对该文件夹的读/写访问权限。 TF401009 该问题可以通过切换 Azure De...

阅读更多

玩转CMake

前言 今日需要将项目迁移到Linux上,那么首先要做的就是创建Linux上的项目啦~ 这就要清楚大名鼎鼎的CMake。 由于网上的教程都是简单的小型项目示例,所以参考起来总是缺点东西。 我这里就用实际大型项目简化出来的项目作为,示例吧~ 安装 太简单了,省略。 CMake说明 简介 在项目文件夹内部,CMake的配置是通过CMakeLists.txt进行配置的。 子项目的配置通常是通过文件夹层级来维护的,这就意味着子文件夹中也需要有自己的CMakeLists.txt文件。 为了方便描述,下文件假设当前的软件叫RX,拥有如下3个项目: System 静态链接库,产生lib。 Interface 动态链接库,依赖System,产生.dll和.lib。 Main ...

阅读更多

Windows 和 Linux 交叉编译

前言 通过CMake设置好项目后,设置编译工具链。 在Windows上生成Linux项目的可执行文件或库,需要使用交叉编译工具链。以下是几种常见的方法和工具,可以帮助你在Windows上进行Linux项目的编译: 使用MSYS2进行交叉编译 MSYS2是一个基于MinGW-w64的工具,提供了一个类Unix环境和完整的交叉编译工具链,支持在Windows上编译Linux项目。 步骤 安装MSYS2: 从MSYS2官网下载安装包并安装。 安装完成后,启动MSYS2 Shell。 更新MSYS2: bash 复制 pacman -Syu 安装交叉编译工具链: 安装MinGW-w64工具链: bash 复制 pacman -S mingw-w64-x86_64-toolchain...

阅读更多

使用 WSL 安装 KUbuntu

前言 手头的工作是需要做一下linux移植工作,突然想到以前总是用虚拟机安装Linux,从来没有尝试过WSL。 那就着手试试吧! 安装 wsl 我这里简单写了,一般也可以顺利的安装。 详细的过程,可以参考文章WSL2安装和基本命令 先安装 wsl 工具 命令行中执行以下命令 wsl --install 安装后重启系统。 安装子系统 子系统有两种方式安装 命令行 # 查看可用linux版本 wsl --list --online # 安装指定的linux版本 wsl --install -d <DistroName> 商店安装 在 Windows Store 中,选择子系统安装。 注意 必须启用以下Windows功能 Hyper-V Vir...

阅读更多

玩转kdevelop

前言 安装 Windows版本 能安装,但是缺少文件Qt6Core5Compat.dll,复制官方较新的Qt6.8.1中的对应文件到程序目录中,可以正常启动。 但是在创建项目及打开项目时会死机。 Linux版本 使用AppStore安装 呃安装失败 使用命令行安装 执行以下命令: sudo apt-get install kdevelop 安装后,直接执行kdevelop即可启动。 注意1 如果启动后出现如下提示信息: kdevelop error:Could not load project management plugin KDevCMakeManager 说明未安装CMake,执行以下命令安装: sudo apt-get install cmake 注意...

阅读更多

KDE相关文件下载

说明 KDE官方下载页面已经好久没有维护了。 现在的二进制生成好像是GitLab 自动生成。 其下载页面地址为 https://cdn.kde.org/ci-builds/

阅读更多

C++模板嵌套问题

前言 在编译一个项目的代码时,发生了编译错误error C3878,简化的代码如下: template<typename T> void Test() { std::list<T*>::iterator t; } 问题分析 上面的简化代码,看起来是没有问题的,即使用AI分析也不会有错误。 实际上上面这段代码在VC140及更早版本中是没问题的。 但是后续版本中,编译要求更严格了。 在VC141、VC142VC下编译,会得到两条错误,如下: error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;” error C7510: “iterator”: 类型 从属名称的使用必须以“typename”为前缀 在VC143下编译,错误信...

阅读更多

C++中静态变量的初始化与销毁

前言 以下为规律总结,并未深入验证,暂时仅作参考。 初始化时机 静态变量的初始化通常是在使用到的时候进行的。 而这个初始化过程,有时候并不是如大家所想象的那么顺利。 假设存在类A的静态对象实例A,在其构造函数中使用类B的静态成员B进行初始化。会因为B并未先初始化而崩溃。 所以避免让静态对象的初始化依赖其他静态成员。 销毁时机 静态变量的销毁通常是随机的,可能会导致一些随机出现的错误。 假设存在类A的静态对象实例A,在其析构函数中调用了类B的静态成员B的接口,那么有可能会出现B已经被析构了,进而导致A的函数调用无效。 所以应避免在静态对象的析构函数中,调用其他静态对象的接口。

阅读更多