组合键映射前进后退键
因为IDE JB全家桶中经常需要使用到前进与后退操作,该操作组合键ctrl + alt + left和ctrl + alt + right。 而本人又不想将让这两个组合键占用鼠标侧键(侧键本人设置为了切换桌面),于是思考使用tab加某按键,实现单手操作前进后退,于是在之前的ChangeTab.ahk中加入了tab + q和tab + w用来表示后退和前进: 12345678#NoEnvTab & Left::HomeTab & Right::EndTab & Up::PgUpTab & Down::PgDnTab & Q::Send, {Ctrl down}{Alt down}{Left down}{Ctrl up}{Alt up}{Left up}Tab & W::Send, {Ctrl down}{Alt down}{Right down}{Ctr ...
EXCLUDE_FROM_ALL参数简介
在CMake中,EXCLUDE_FROM_ALL 是一个选项,可以用于 add_custom_target、add_custom_command、add_library、add_executable 等命令。当设置为 TRUE 时,它指示CMake生成的构建系统不要将该目标包含在默认的构建目标中。 具体来说,EXCLUDE_FROM_ALL 的作用包括: 默认不构建:当执行构建命令(如 make 或 cmake --build)时,被标记为 EXCLUDE_FROM_ALL 的目标不会被自动构建。这意味着它们不会包含在 “all” 目标中。 显式构建:尽管这些目标不会在默认构建中生成,但用户仍然可以通过显式指定目标名称来构建它们。例如,如果有一个被 EXCLUDE_FROM_ALL 标记的可执行文件 my_executable,用户可以通过 make my_executable 来单独构建它。 依赖管理:如果其他目标依赖于被 EXCLUDE_FROM_ALL 标记的目标,这些依赖目标仍然会被构建。EXCLUDE_FROM_ALL 只影响默认构建目标的包含性,不影响依赖关系。 使用 ...
模块库简介
模块库(Module Library)是一种特殊的动态库,通常用于插件系统或模块化应用程序。在CMake中,模块库可以通过在add_library函数中使用MODULE关键字来创建。 模块库的特点包括: 动态加载:模块库设计为可以在运行时动态加载和卸载,这使得应用程序可以在不重新启动的情况下扩展功能。 独立性:模块库通常独立于主应用程序,它们可以包含自己的资源、依赖和初始化代码。 接口定义:模块库通常定义了一组接口或API,主应用程序通过这些接口与模块库交互。 可选性:模块库的加载通常是可选的,应用程序可以根据需要加载或不加载特定的模块。 在不同操作系统上,模块库的文件扩展名可能不同: 在Windows上,模块库通常是DLL文件。 在Linux上,模块库通常是.so文件。 在macOS上,模块库通常是.bundle文件。 模块库的使用场景包括: 插件系统:许多应用程序(如文本编辑器、图像处理软件、游戏引擎等)支持插件,这些插件通常实现为模块库。 模块化应用程序:一些大型应用程序可能被设计为模块化的,每个模块作为一个独立的库存在。 服务扩展:服务器软件可能支持通过模块库来扩展其 ...
CMake导入动态库注意事项及建议(Windows篇)
前言:不同操作系统对于可执行程序及其依赖的动态库的管理方式不同,以下内容针对的是Windows平台下的注意事项及建议,且部分文件是按照的MSVC构建套件下生成的文件格式举例。 当通过各种方式导入动态库之后,可能会遇到一个问题:cmake执行正常,构建编译正常,生成了exe文件,但是执行时却出了问题: 有些情况下构建阶段就会报错: 我们打开cmake生成的构建文件夹,找到可执行程序.exe(可执行程序在构建(即编译)完成后就生成了),将.dll文件拷贝到.exe同目录下: 再次执行,发现问题解决了,程序正常执行: 为什么找不到.dll的报错,通过将该文件复制到可执行文件的位置,运行时这个问题就解决了? 如果你确定了使用的库在导出是没有问题,那么问题很可能就出现在运行时动态库的链接上。 动态库在编译构建时不会打包进入程序中(这是与静态库的区别,静态库在编译的链接阶段会导入到可执行文件中)。 动态库只有在两种情况下会被可执行文件链接使用:load-time dynamic linking(加载时动态链接)和run-time dynamic linking(运行时动态 ...
CMake介绍-语法篇1
基本的Cmake结构 当我们创建好一个CLion的Cpp项目时,会发现CLion自动为我们生成了一个最基础的CMakeLists.txt文件。 初始内容如下所示: 12345678cmake_minimum_required(VERSION 3.30) # CMake最低版本要求,建议不要过高或过低project(cmaketest1) # 本项目的工程名set(CMAKE_CXX_STANDARD 11) # 设置C++标准,此处意为C++11add_executable(cmakeTest1 main.cpp test.cpp test.h) 命令解析cmake_minimum_required() 图示供下方文字参考 cmake_minimum_required是cmake的一个command,其设置项目的最低的cmake版本要求。如果实际环境的cmake版本小于该命令的设置,则报错。这个命令通常是必要的,且在CMakeLists.txt文件的一开始就使用。(如果有多层目录,那么子目录 ...
CMake介绍-概念篇
CMake是什么CMake 是一个开源的跨平台自动化生成建构系统、用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个函数库。CMake 通过使用简单的配置文件 CMakeLists.txt,自动生成不同平台的构建文件(如 Makefile、Ninja 构建文件、Visual Studio 工程文件等),简化了项目的编译和构建过程。 CMake 本身不是构建工具,而是生成构建系统(的配置文件)的工具,它生成的构建系统可以使用不同的编译器和工具链。 cpp编译过程cpp程序的编译过程: windows下生成可执行程序是.exe 编译工具链cpp程序自己肯定是无法做到上面这些流程的,必须借助一些外部的工具,来执行整个编译流程,编译器与链接器等就扮演了这个角色。通常来说,一个完整的编译流程,并不是只依赖于某一个编译链接工具,而是以来一连串的工具链。 Windows:MSVC和SDK MSVC并不是一个单独的编译、连接器,而是一套工具链集合。SDK主要提供了在编译链接过程中要使用到的C、C++标准库以及 ...
windows11-24H2输入法BUG及临时解决方法
Windows11更新24H2后出现输入法BUG 现象:当微软输入法选择“为每个窗口使用不同的输入法”之后,使用alt+tab切换窗口,输入法总是为默认的,而不是窗口上一次处于的输入法状态。 比如如果默认输入法是中文,目前处于微信界面,且输入法为英文,那么使用alt+tab切换到另一个软件,再切换回来,输入法并不是英文,而是变为了默认的中文。【目前仅在微软输入法上发现了BUG,其他输入法未知】 解决方法:目前只能是使用一个权宜之计,没办法完全解决,只能等待新版本的更新,所以说大家不要轻易更新电脑系统啊!! 打开兼容性微软拼音的兼容性选项 补充,微软原版本的输入法是win10的,因此无法使用win11的外观,不过还是可以通过win11的设置使得一些功能生效或关闭,此处更改一些设定,让输入法更好用: 关闭web建议,这样输入法的第2个位置就不会有一朵云彩形状的提示了,而且现在这个web建议功能已经失效了,纯粹占用空间。 候选词的个数可以多一些 观赏表情符号面板,这样候选测窗口最后面一列就不会显示表情符号标志了,实际输入过程中,表情符号标志没啥用
库-什么是动静态库
库库文件是计算机上的一类文件,提供给使用者一些开箱即用的变量、函数或类。库文件_百度百科 库的存在,就是为了代码的复用,同时减少项目结构的冗杂。 在项目编译过程中,执行到”汇编”阶段之后,项目从汇编语言变成了只有机器可以读懂的二进制机器指令,然后再执行”链接”。库文件就是一类二进制指令组成的文件,在”链接”的阶段被添加到项目中参与编译,最后生成可执行文件。 一个完整的库包括头文件、库文件。 库文件是通过.cpp源文件生成的,将源文件中的【某些内容】构建成了二进制指令,保存在了库文件中。 【某些内容】:用户有时候可以指定哪些类或函数构建到库文件中,而不是将源文件中全部的内容都导入到库文件中。这些被选择导入库文件中的,就成为导出类、导出函数、导出变量。通过为这些类、函数、变量设置”导出符号“,将它们标定成为导出类、函数和变量。 用户在使用库的时候,通过引入库中的头文件,来调用库中的类和方法。因为库文件内容全部都是二进制指令,用户无法读懂,所以必须要借助头文件,才能被用户所使用,此时头文件就像是一本说明书,告知了用户库中包含的类和方法,以及这些东西的作用。同时,头文件中的声明,也告 ...
修改环境变量之后vscode需要重启才能使终端生效
如题,修改环境变量之后,调用vscode内部终端,无法立即得到更新,需要重启一下vscode才行(就算是不重启,只是更新vscode内部终端也是没有效果的)
解决PowerShell报错“进制在此系统上运行脚本”的问题
问题情景有时候需要使用PowerShell执行一些脚本操作,比如使用Hexo脚本自动化搭建博客等时,会发现PowerShell上无法执行,并报错: 但是在cmd中执行,则会正常: 为什么因为在powershell中执行脚本是需要权限的(算是一种安全性的设置),即”脚本执行策略的设置“ powershell脚本运行的几种权限(几种执行策略): Restricted:默认设置,不允许任何脚本执行。处于Undefine状态时就是此执行策略 AllSigned:只能运行经过数字证书签名的脚本 RemoteSigned:运行本地脚本不需要数字证书签名,运行从远程脚本(如网络脚本)必须要数字证书签名 Unrestricted:允许所有的脚本运行,但是在运行前会提示是否进行操作 Bypass:允许所有的脚本运行,并且没有任何的提示和警告 另外还有两种执行策略: Default:默认执行策略,Windows客户端为Restricted;Windows服务器为RemoteSigned。 Undefined:当前范围没有执行策略。如果所有范围的执行策略都是Undefined的话,实际使 ...