当前位置: 首页 > news >正文

CMakeLists使用

1.预定义宏

宏                                     功能
PROJECT_SOURCE_DIR            使用cmake命令后紧跟的目录,一般是工程的根目录
PROJECT_BINARY_DIR            执行cmake命令的目录
CMAKE_CURRENT_SOURCE_DIR      当前处理的CMakeLists.txt所在的路径
CMAKE_CURRENT_BINARY_DIR      target编译目录
EXECUTABLE_OUTPUT_PATH         重新定义目标二进制可执行文件的存放位置
LIBRARY_OUTPUT_PATH            重新定义目标链接库文件的存放位置
PROJECT_NAME                   返回通过PROJECT指令定义的项目名称
CMAKE_BINARY_DIR               项目实际构建路径,假设build目录下进行构建,那么得到的就是这个目录的路径

例如:

cmake_minimum_required(VERSION 3.10)
project(MyProject)
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_COMPILER "clang++")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_executable(MyProject main.cpp)#这是一个CMakeLists.txt文件 -#注释
#[[ 块注释  大小写可以混用]]
cmake_minimum_required(VERSION 3.0.0) #指定使用的cmake的最低版本,可选
project(APP) #定义工程名称
set(CMAKE_BUILD_TYPE Debug)  #指定为Debug模式find_package(a REQUIRED)# 查找 a

2.执行程序

#[[ add_executable(可执行程序名 源文件名称)
#这里的可执行程序名和project中项目名没有任何关系
#源文件名称可以多个,用“ ;”间隔 ]]
add_executable(app add.c;div.c;main.c)

3.定义变量

#[[定义变量 SETSET(VAR [VALUE]) AR:变量名 VALUE:变量值 ]]
#各源文件之间使用空格 或 分号;间隔
set(SRC_LIST add.c div.c main.c)
set(SRC_LIST add.c;div.c;main.c)
add_executable(app ${SRC_LIST})

4.指定使用的C++标准

#c++11,c++14,c++17,c++20
#g++ *.cpp -std=c++11 -o app
#在CMakeLists.txt增加-std=c++11 宏DCMAKE_CXX_STANDARD
set(CMAKE_CXX_STANDARD 11)
#在执行cmake命令时制定出这个宏的值
cmake .. -DMAKE_CXX_STANDARD=11

5.指定输出路径

#宏EXECUTABLE_OUTPUT_PATH
set(HOME /home/robin/linux/sort)
set(EXCUTABLE_OUTPUT_PATH ${HOME}/bin)

6.搜索文件

#使用aux_source_directory或file
#aux_source_directory(<dir> <variable>)
#dir:要搜索的目录,variable:将从dir目录下搜索到的源文件列表存储到该变量中#搜索src目录下的源文件
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRC_LIST)
add_executable(app ${SRC_LIST})#file搜索想要的文件
#file(GLOB/GLOB_RECURSE 变量名 要搜索的文件路径和文件类型)
#GLOB:将指定目录下搜索到的满足条件的所有文件名生成一个列表,
#并将其存储到变量中
#GLOB_RECURSE:递归搜索指定目录,将搜索到满足条件的文件名生成一个列表,并将其存储到变量中#搜索到当前目录的src目录下的所有源文件,并将其存储到变量中
file(GLOB MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
file(GLOB MAIN_HEAD ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h)
#CMAKE_CURRENT_SOURCE_DIR宏表示当前访问的CMakeLists.txt文件所在的路径
#关于要搜索的文件路径可加引号,也可不加
file(GLOB MAIN_HEAD "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h")

7.包含头文件

#include_directories(headpath)
include_directories(${PROJECT_SOURCE_DIR}/include)
#PROJECT_SOURCE_DIR宏对应是工程的根目录

8.制作动态库或静态库

8.1 制作静态库

#add_library(库名称 STATIC 源文件1 [源文件2] ...)
#在Linux中,静态库名字分为三部分:lib+库名称 +.a
include_directories(${PROJECT_SOURCE_DIR}/include)
file(GLOB SRC_LIST "${CMAKE_CURRENT_DIR}/src/*.cpp")
add_library(calc STATIC $(SRC_LIST})
#生成libcalc.a

8.2 制作动态库

#add_library(库名称 SHARED 源文件1 [源文件2] ...)
#在Linux中,动态库名字分为三部分:lib+库名称 +.so
include_directories(${PROJECT_SOURCE_DIR}/include)
file(GLOB SRC_LIST "${CMAKE_CURRENT_DIR}/src/*.cpp")
add_library(calc SHARED ${SRC_LIST})
#生成libcalc.so

8.3 指定输出的路径

#方式1-适用于动态库
include_directories(${PROJECT_SOURCE_DIR}/include)
file(GLOB SRC_LIST "${CMAKE_CURRENT_DIR}/src/*.cpp")
#设置动态库生成路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
add_library(calc SHARED ${SRC_LIST})#方式2-都适用
#LIBRARY_OUTPUT_PATH
include_directories(${PROJECT_SOURCE_DIR}/include)
file(GLOB SRC_LIST "${CMAKE_CURRENT_DIR}/src/*.cpp")
#设置动态库/静态库生成路径
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
#add_library(calc SHARED ${SRC_LIST})
add_library(calc STATIC ${SRC_LIST})

9.包含库文件

9.1 链接静态库

#链接静态库命令:
#link_library(<static lib> ...])
#参数1:指定出要链接静态库的名字
#参数2:要链接的其他静态库的名字
#如果静态库是自定义的,可以将静态库的路径指定出来
#link_directories(<lib path>)
cmake_minimum_required(VERSION 3.0)
project(CALC)
#搜索指定目录下的源文件
file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
#包含静态库路径
link_directories(${PROJECT_SOURCE_DIR}/include)
#链接静态库
link_library(calc)
add_executable(app ${SRC_LIST})#例如:
cmake_minimum_required(VERSION 3.0)
project(YourProjectName)
# 查找ncurses库
find_package(Curses REQUIRED)
# 添加可执行文件
add_executable(your_target_name your_source_files.cpp)
# 包含ncurses头文件和链接ncurses库
include_directories(${CURSES_INCLUDE_DIR})
target_link_libraries(your_target_name ${CURSES_LIBRARIES})

9.2 链接动态库

target_link_libraries(<target><PRIVATE|PUBLIC|INTERFACE> <item>...)
)

用于指定一个目标(如可执行文件或库)在编译时需要链接哪些库。它支持指定库的名称、路径以及链接库的顺序。
target:指定要加载的库的文件名字
该文件可能是一个源文件
该文件可能是一个动态库/静态库文件
该文件可能是一个可执行文件

PRIVATE|PUBLIC|INTERFACE:动态库的访问权限,默认为PUBLIC

#在cmake中指定要链接的动态库的时候,应该将命令写到生成了可执行文件之后
file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
# 添加并指定最终生成的可执行程序名
add_executable(app ${SRC_LIST})
# 指定可执行程序要链接的动态库名字
target_link_libraries(app pthread)
#app:对应的是最终生成的可执行程序的名字
#phread:可执行程序要加载的动态库,全名libpthread.so

10日志

#message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR]
#"message to display" ...)
#(无):重要信息
#STATUS:非重要信息
#WARNING:CMake警告,会继续执行
#AUTHOR_WARNING:CMake警告(dev),会继续执行
#SEND_ERROR:CMake错误,继续执行,但是会跳过生成的步骤
#FATAL_ERROR:CMake错误,终止所有处理过程#输出一般日志信息
message(STATUS "source path:${PROJECT_SOURCE_DIR}")
#输出警告信息
message(WARNING "source path:${PROJECT_SOURCE_DIR}")
#输出错误信息
message(FATAL_ERROR "source path:${PROJECT_SOURCE_DIR}")

11变量操作

11.1 追加

源文件不在同一目录下,但是需要进行编译来生成最终的可执行文件或者库文件
file命令对源文件进行搜索,字符串拼接set,也可以使用list命令

#使用set拼接
#set(变量名 ${变量名1} ${变量名2})
cmake_minimum_required(VERSION 3.0)
project(TEST)
set(TEMP "hello world")
file(GLOB SRC_1 ${PROJECT_SOURCE_DIR}/src1/*.cpp)
file(GLOB SRC_2 ${PROJECT_SOURCE_DIR}/src2/*.cpp)
#追加(拼接)
set(SRC_1 ${SRC_1} ${SRC_2} ${TEMP})
message(STATUS "message:${SRC_1}")#使用list拼接
list(APPEND <list> [<element> ...])
#list命令比set强大,字符串拼接只是它的其中一个功能,APPEND表示进行数据追加,后面的参数和set一样#在CMake中,使用set命令可以创建一个list。一个在list内部是一个由“分号;"
#分割的一组字符串。例如,set(var a b c d e)命令将会创建一个list:a;b;c;d;e,但是会跳过生成的步骤
#最终打印变量值的时候得到的是abcde.
set(tmp1 a;b;c;d;e)
set(tmp2 a b c d e)
message(${tmp1})
message(${tmp2})
#输出结果
#abcde
#abcde

11.2字符串移除

#list(REMOVE_ITEM <list> <value> [<value> ...])
cmake_minimum_required(VERSION 3.0)
project(TEST)
set(TEMP "hello,world")
file(GLOB SRC_1 ${PROJECT_SOURCE_DIR}/*.cpp)
#移除前日志
message(STATUS "message:${SRC_1}")
#移除main.cpp  绝对路径
list(REMOVE_ITEM SRC_1 ${PROJECT_SOURCE_DIR}/main.cpp)
#移除后日志
message(STATUS "message:${SRC_1})

12.宏定义

#gcc test.c -DDEBUG -o app
#-D指定出要定义的宏的名字,其名字为DEBUG
CMake中对应命令为add_definitions
add_definitions(-D宏名称)

13.嵌套的CMake

#根节点CMakeLists.txt中的变量全局有效
#父节点CMakeLists.txt中的变量可以在子节点中使用
#子节点CMakeLists.txt中的变量只能再当前节点中使用
add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])

14.流程控制

if(<condition>)<commands>
elseif(<condition>)<commands>
else()<commands>
endif()

14.1 文件操作

#判断文件或者目录是否存在
if(EXISTS path-to-file-or-directory)
如果文件或者目录存在返回True,否则返回False
#判断是不是目录
if(IS_DIRECTORY path)
path必须是绝对路径,存在返回True,不存在返回False
#判断是不是软链接
if(IS_SYMLINK file-name)
此处的file-name对应的路径必须是绝对路径
如果软链接存在返回True,软链接不存在返回False
软链接相当于windows里的快捷方式
#判断是不是绝对路径
if(IS_ABSOLUTE path)
是True

14.2循环

foreach 和 while
#foreach
foreach(<loop_var> RANGE <stop>)
RANGE:关键字,表示要遍历范围 [0,stop],右侧是闭区间包含 stop 这个值。
stop:这是一个正整数,表示范围的结束值,在遍历的时候从0开始,最大值为stop
loop_var:存储每次循环取出的值
foreach(item RANGE 10)message(STATUS "当前遍历的值为:${item}")
endforeach()foreach(<loop_var> RANGE <start><stop>[<step>])
step默认步长为1,可以不设置
foreach(item RANGE 10 30 2)message(STATUS "当前遍历的值为:${item}")
endforeach()foreach(<loop_var> IN [LISTS [<lists>]] [ITEMS[items]])
cmake_minimum_required(VERSION 3.2)
project(test)
#创建list
set(WORD a b c d e)
set(NAME ace sabo luffy)
#遍历list   
foreach(item IN LISTS WORD NAME)message(STATUS "当前遍历的值为:${item}")
endforeach()
#或者
foreach(item IN INTEMS ${WORD}${NAME})message(STATUS "当前遍历的值为:${item}")
endforeach()while()<commands>
endwhile()

相关文章:

CMakeLists使用

1.预定义宏 宏 功能 PROJECT_SOURCE_DIR 使用cmake命令后紧跟的目录&#xff0c;一般是工程的根目录 PROJECT_BINARY_DIR 执行cmake命令的目录 CMAKE_CURRENT_SOURCE_DIR 当前处理的CMakeLists.txt所在的路径…...

P7201 [COCI 2019/2020 #1] Džumbus

题目背景 Marin 是一个心地善良的人,因此他将为他的 N 个朋友组织 Q 次宴会。宴会上唯一的饮料被称为 džumbus。 每位朋友对这种饮料的需求量是已知的。在这些朋友中,有 M 组朋友。每一组中的两位在同时满足他们各自的需求量后,将开始互相核对自己对往届 COCI 题目的答案…...

网络性能测试工具ipref

文章目录 一、ipref的介绍二、iperf安装配置三、iperf使用四、iperf常见故障处理 一、ipref的介绍 ipref是一种常用的网络性能测试工具&#xff0c;用于评估网络带宽、延迟和吞吐量等性能指标。它通过在客户端和服务器之间发送数据流来测量网络的性能&#xff0c;可以帮助管理…...

C# Dictionary的实现原理

在 C# 中&#xff0c;Dictionary<TKey, TValue> 是一个基于哈希表&#xff08;Hash Table&#xff09;实现的键值对集合。它提供了高效的插入、删除和查找操作&#xff0c;平均时间复杂度接近 O(1)。下面是 Dictionary 的核心实现原理&#xff1a; 1. Dictionary 的核心数…...

在项目中操作 MySQL

在现代Web开发中&#xff0c;Node.js因其非阻塞I/O模型和高效的性能成为了构建后端服务的热门选择之一。与此同时&#xff0c;MySQL作为最流行的关系型数据库管理系统之一&#xff0c;凭借其稳定性、可靠性和易用性&#xff0c;在数据存储方面扮演着重要角色。本文将详细介绍如…...

第6章 6.4 ASP.NET Core Web API各种技术及选择

6.4.1 控制器父类用哪个 6.2小节和6.3小节所演示的ASP.NET Core Web API 的控制器类都继承自ControllerBase&#xff0c;而6.1中MVC的控制器继承自Controller&#xff0c;Controller又继承自ControllerBase。 所以&#xff0c;一般情况下&#xff0c;编写的WebAPI控制器类继承…...

DeepSeek本地化部署【window下安装】【linux下安装】

一、window 本地安装指导 1.1、下载window安装包 https://ollama.com/download/OllamaSetup.exe 1.2、点击下载好的安装包进行安装 检测安装是否成功&#xff1a; C:\Users\admin>ollama -v ollama version is 0.5.7有上面的输出&#xff0c;则证明已经安装成功。 配置…...

字玩FontPlayer开发笔记14 Vue3实现多边形工具

目录 字玩FontPlayer开发笔记14 Vue3实现多边形工具笔记整体流程临时变量多边形组件数据结构初始化多边形工具mousedown事件mousemove事件监听mouseup事件渲染控件将多边形转换为平滑的钢笔路径 字玩FontPlayer开发笔记14 Vue3实现多边形工具 字玩FontPlayer是笔者开源的一款字…...

kkFileView二开之pdf转图片接口

kkFileView二开之Pdf转图片接口 1 kkFileView源码下载及编译2 Pdf转图片接口2.1 背景2.2 分析2.2 接口开发2.2.1 编写Pdf转图片方法2.2.2 编写转换接口 2.3 接口测试2.3.1 Pdf文件准备2.3.2 pdf2Image 3 部署 1 kkFileView源码下载及编译 前文 【kkFileView二开之源码编译及部…...

达梦tpcc压测

造数 在这个日志输出中&#xff0c;主要执行了一系列数据库操作&#xff0c;涵盖了数据库信息检查、表的创建与数据加载、索引的添加、数据验证等步骤。具体分析如下&#xff1a; 数据库信息检查&#xff1a; 查询了数据库的版本、实例名称、日志文件大小、字符集等信息。 删…...

计算机毕业设计PySpark+hive招聘推荐系统 职位用户画像推荐系统 招聘数据分析 招聘爬虫 数据仓库 Django Vue.js Hadoop

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

DeepSeek正重构人形机器人和具身大模型赛道!

中国人工智能公司DeepSeek&#xff08;深度求索&#xff09;以“低成本、高效率、强开放”的研发范式横空出世&#xff0c;火遍并震撼全球科技圈&#xff1b;DeepSeek展现出来的核心竞争力&#xff0c;除了低成本及推理能力&#xff0c;更重要的是开源模型能力追赶上了最新的闭…...

第1章 信息化发展(一)

1.1信息与信息化 1.1.1信息基础 1.信息的定义 信息是物质、能量及其属性的标示的集合&#xff0c;是确定性的增加。它以物质介质为载体&#xff0c;传递和反映世界各种事物存在方式、运动状态等的表征。信息不是物质也不是能量&#xff0c;它以一种普遍形式&#xff0c;表达…...

面试经典150题——字典树

文章目录 1、实现 Trie (前缀树)1.1 题目链接1.2 题目描述1.3 解题代码1.4 解题思路 2、添加与搜索单词 - 数据结构设计2.1 题目链接2.2 题目描述2.3 解题代码2.4 解题思路 3、单词搜索 II3.1 题目链接3.2 题目描述3.3 解题代码3.4 解题思路 对于字典树而言&#xff0c;之前做过…...

【前端 DevOps】GitHub Actions 与 GitLab CI 实战:实现前端项目的自动化测试与部署

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

SQLMesh系列教程-3:SQLMesh模型属性详解

SQLMesh 的 MODEL 提供了丰富的属性&#xff0c;用于定义模型的行为、存储、调度、依赖关系等。通过合理配置这些属性&#xff0c;可以构建高效、可维护的数据管道。在 SQLMesh 中&#xff0c;MODEL 是定义数据模型的核心结构&#xff0c;初学SQLMesh&#xff0c;定义模型看到属…...

【Maven】多module项目优雅的实现pom依赖管理

【Maven】多module项目优雅的实现pom依赖管理 【一】方案设计原则【二】项目结构示例【三】实现思路【1】可能的问题点&#xff1a;【2】解决方案的思路&#xff1a;【3】需要注意的地方&#xff1a;【4】可能的错误&#xff1a; 【四】实现案例【1】父POM设计&#xff08;pare…...

【数字】异步FIFO面试的几个小问题与跨时钟域时序约束

入门数字设计的时候&#xff0c;跨时钟域的数据处理是绕不开的课题&#xff0c;特别是多比特数据跨时钟域时&#xff0c;都会采用异步FIFO的方法。 异步FIFO中涉及较多的考点这里记录几个以供大家参考。 1. 异步FIFO的空满判断分别在哪个域&#xff1f; 根据异步FIFO的结构&…...

云原生时代的开发利器

云原生时代的开发工具集之中&#xff0c;至少应有这样一种利器&#xff1a;基于微服务架构的低代码开发平台&#xff0c;同时与业界标准的云原生技术支撑设施能够完全协同和融合。低代码开发平台的构建不仅仅是采用微服务开发框架&#xff0c;更加重要的是符合当前主流的中台和…...

利用IDEA将Java.class文件反编译为Java文件:原理、实践与深度解析

文章目录 引言&#xff1a;当.class文件遇到源代码缺失第一章&#xff1a;反编译技术基础认知1.1 Java编译执行原理1.2 反编译的本质1.3 法律与道德边界 第二章&#xff1a;IDEA内置反编译工具详解2.1 环境准备2.2 三步完成基础反编译2.3 高级反编译技巧2.3.1 调试模式反编译2.…...

C++ Primer 参数传递

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...

2.7 静态方法/构造函数Mock

静态方法/构造函数Mock 在单元测试中&#xff0c;静态方法和构造函数的Mock是相对复杂的需求&#xff0c;因为Mockito的核心设计基于对象实例的模拟。然而&#xff0c;通过扩展工具或特定技巧&#xff0c;可以实现对这些场景的处理。本章详解两种主流方案&#xff1a;PowerMoc…...

注册Gmail如何跳过手机验证环节?

很多小伙伴在注册Gmail的时候都会遇到一个难题&#xff1a;手机号码验证&#xff0c;有可能包括了“手机号无法验证” “国内手机号验证失败” “收不到验证码”等等问题&#xff0c;但 根据真实案例&#xff0c;还有部分人则是“幸运地”没有手机号验证环节&#xff0c;那么今…...

【算法专场】哈希表

目录 前言 哈希表 1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 算法分析 算法代码 面试题 01.02. 判定是否互为字符重排 ​编辑算法分析 算法代码 217. 存在重复元素 算法分析 算法代码 219. 存在重复元素 II 算法分析 算法代码 解法二 算法代码 算法…...

5、pod 详解 (kubernetes)

pod 详解 &#xff08;kubernetes&#xff09; Pod 的基础概念pause 容器Pod 的分类与创建自主式 Pod控制器管理的 Pod静态 Pod Pod容器的分类基础容器&#xff08;infrastructure container&#xff09;初始化容器&#xff08;initcontainers&#xff09;应用容器&#xff08;…...

二叉树详解:Java实现与应用

在计算机科学中&#xff0c;数据结构是构建高效算法的基石&#xff0c;而二叉树作为一种基础且重要的树形结构&#xff0c;在诸多领域都有着广泛应用&#xff0c;如数据库索引、文件系统、编译器设计等。本文将从基础概念入手&#xff0c;带你逐步深入理解二叉树&#xff0c;并…...

GPT和BERT

笔记来源&#xff1a; Transformer、GPT、BERT&#xff0c;预训练语言模型的前世今生&#xff08;目录&#xff09; - B站-水论文的程序猿 - 博客园 ShusenWang的个人空间-ShusenWang个人主页-哔哩哔哩视频&#xff08;RNN模型与NLP应用&#xff09; 一、GPT 1.1 GPT 模型的…...

【工业安全】-CVE-2024-30891- Tenda AC18路由器 命令注入漏洞

1.漏洞描述 2.漏洞复现 2.1 qemu-user 模拟&#xff1a; 2.2 qemu-system模拟&#xff1a; 3.漏洞分析 4.poc代码&#xff1a; 1.漏洞描述 漏洞编号&#xff1a;CVE-2024-30891 漏洞名称&#xff1a;Tenda AC18 命令注入 威胁等级&#xff1a;高危 漏洞详情&#xff1a;Ten…...

如何从0开始将vscode源码编译、运行、打包桌面APP

** 网上关于此的内容很少&#xff0c;今天第二次的完整运行了&#xff0c;按照下文的顺序走不会出什么问题。最重要的就是环境的安装&#xff0c;否则极其容易报错&#xff0c;请参考我的依赖版本以及文末附上的vscode官方指南 ** 第一步&#xff1a;克隆 VSCode 源码 首先…...

登录弹窗效果

1&#xff0c;要求 点击登录按钮&#xff0c;弹出登录窗口 提示1&#xff1a;登录窗口 display:none 隐藏状态&#xff1b; 提示2&#xff1a;登录按钮点击后&#xff0c;触发事件&#xff0c;修改 display:block 显示状态 提示3&#xff1a;登录窗口中点击关闭按钮&#xff0…...

wps或office的word接入豆包API(VBA版本)

直接上代码&#xff0c;由于时间匆忙&#xff0c;以后写个详细的教程 #If VBA7 ThenPrivate Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As…...

深入浅出 Python Logging:从基础到进阶日志管理

在 Python 开发过程中&#xff0c;日志&#xff08;Logging&#xff09;是不可或缺的调试和监控工具。合理的日志管理不仅能帮助开发者快速定位问题&#xff0c;还能提供丰富的数据支持&#xff0c;让应用更具可观测性。本文将带你全面了解 Python logging 模块&#xff0c;涵盖…...

系统巡检脚本分享:守护服务器的“健康卫士”

在日常的运维工作中&#xff0c;系统巡检是一项至关重要的任务。它可以帮助我们及时发现服务器的潜在问题&#xff0c;确保系统的稳定运行。今天&#xff0c;我想和大家分享一个实用的系统巡检脚本&#xff0c;它能够帮助我们快速、全面地检查服务器的健康状况。 一、为什么需…...

【Elasticsearch】运行时字段(Runtime Fields)索引时定义运行时字段

在 Elasticsearch 中&#xff0c;运行时字段&#xff08;Runtime Fields&#xff09;是一种在查询时动态计算的字段&#xff0c;而不是在索引时预先存储的字段。运行时字段为数据处理提供了极大的灵活性&#xff0c;尤其是在处理结构不固定的日志数据或需要动态生成字段值的场景…...

C++从入门到实战(四)C++引用与inline,nullptr

C从入门到实战&#xff08;四&#xff09;C引用与inline&#xff0c;nullptr 前言一、C 引用&#xff08;一&#xff09;什么是引用&#xff08;二&#xff09;引用的特点&#xff08;三&#xff09;引用作为函数参数&#xff08;四&#xff09;引用作为函数返回值&#xff08;…...

DeepSeek 助力 Vue 开发:打造丝滑的卡片(Card)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

Azure Synapse Dedicated SQL Pool统计指定表中各字段的空值、空字符串或零值比例

-- 创建临时表存储结果 CREATE TABLE #Results (DatabaseName NVARCHAR(128),TableName NVARCHAR(128),ColumnName NVARCHAR(128),DataType NVARCHAR(128),NullOrEmptyCount INT,TotalRows INT,Percentage DECIMAL(10,2) );DECLARE db_name SYSNAME DB_NAME(); -- 获取当前数…...

【深度学习】计算机视觉(CV)-目标检测-SSD(Single Shot MultiBox Detector)—— 单次检测多框检测器

&#x1f539; SSD&#xff08;Single Shot MultiBox Detector&#xff09;—— 单次检测多框检测器 1️⃣ 什么是 SSD&#xff1f; SSD (Single Shot MultiBox Detector) 是一种用于 目标检测&#xff08;Object Detection&#xff09; 的 深度学习模型&#xff0c;由 Wei L…...

力扣100. 相同的树(利用分解思想解决)

Problem: 100. 相同的树 文章目录 题目描述思路Code 题目描述 思路 题目要求判断两个二叉树是否完全相同&#xff0c;而此要求可以利用问题分解的思想解决&#xff0c;即判断当前节点的左右子树是否完全相同&#xff0c;而在二叉树问题分解的一般题目中均会带有返回值&#xff…...

在SpringBoot服务器端采购上,如何选择操作系统、Cpu、内存和带宽、流量套餐

在Spring Boot服务器端采购时&#xff0c;选择操作系统、CPU、内存、带宽和流量套餐需根据应用需求、预算和性能要求综合考虑。以下是具体建议&#xff1a; 1. 操作系统 Linux发行版&#xff08;如Ubuntu、CentOS&#xff09;&#xff1a;适合大多数Spring Boot应用&#xff…...

我的新书《青少年Python趣学编程(微课视频版)》出版了!

&#x1f389; 激动人心的时刻来临啦&#xff01; &#x1f389; 小伙伴们久等了&#xff0c;我的第一本新书 《青少年Python趣学编程&#xff08;微课视频版&#xff09;》 正式出版啦&#xff01; &#x1f4da;✨ 在这个AI时代&#xff0c;市面上的Python书籍常常过于枯燥&…...

elementUI rules 判断 el-cascader控件修改值未生效

今天修改一个前端项目&#xff0c;增加一个多选字段&#xff0c;使用的是el-cascader控件&#xff0c;因页面是通过引用子页面组件形式使用&#xff0c;出现一个点选后再勾选原有值&#xff0c;输入框内不展示或取消后的也未正常隐藏&#xff0c;如果勾选的值是全新的则其他已选…...

深度学习与人工智能:解锁未来的无限可能

在当今这个科技飞速发展的时代&#xff0c;深度学习和人工智能已不再只是科幻小说中的概念&#xff0c;它们正以惊人的速度渗透到我们生活的方方面面&#xff0c;从智能手机上的语音助手到医疗领域的疾病诊断&#xff0c;从自动驾驶汽车到金融市场的风险预测&#xff0c;其影响…...

pwa应用进阶2-动态加载manifest.json文件

接pwa应用进阶-区分AB面-添加安装按钮而且区分不同的系统和浏览器的各种情况继续优化&#xff0c;主要是让manifest.json文件动态加载。 pwa应用进阶2-动态加载manifest.json文件 主要用途如下&#xff1a; 动态切换PWA的清单文件&#xff0c;例如根据不同的语言或者主题加载不…...

UI用例调试_元素能定位到且不在frame内_无法点击/录入文本

关于单据新增&#xff0c;编辑子集信息遇到的2个阻塞点&#xff0c;做记录已供后续参考 1、新增按钮元素能定位&#xff0c;就是无法点击 实现效果&#xff1a; 单据新增时&#xff0c;前面单据数据编辑完之后&#xff0c;开始新增证件信息&#xff0c;需要先点击新增按钮。…...

Python的web框架Flask适合哪些具体的应用开发?

Flask 适用的具体应用及实现案例代码 Flask 是一个轻量级的 Web 应用框架,以其简洁性和灵活性而广受欢迎。以下是 Flask 适合的具体应用场景及相关的实现案例代码: 1. 小型网站或博客 由于 Flask 的简洁性和易于使用的特性,它非常适合用来搭建个人博客或者小型的企业网站…...

oracle使用动态sql将多层级组织展平

ERP或者其他企业管理软件中都会有一张组织机构表&#xff0c;可以写固定sql的方式将其展平获取组织表中的字段信息&#xff0c;如负责人、上级组织负责人、分管领导、成立时间等。但是这种方式有个缺陷&#xff0c;就是如果只写到处理4个层级&#xff0c;那么后期层级增多就无法…...

vue学习笔记10

ChatGPT & Copilot AI 的认知 两个工具 1、ChatGPT 3.5 2、Github Copilot ChatGPT 的基本使用 - Prompt 优化 AI 互动的过程中&#xff0c;容易出现的问题&#xff1a; 1、 AI未能理解问题的核心要点 2、 AI的回答过于宽泛 或 过于具体 3、 AI提供了错误的信息或…...

网络安全常识

随着互联网和移动互联网的持续火热&#xff0c;人们的生活也越来越离不开网络&#xff0c;网络安全&#xff0c;在这个信息化时代显得尤为重要&#xff0c;那么网络攻击和安全&#xff0c;这一攻守之间&#xff0c;主要涵盖哪些要点呢&#xff0c;下面我们就来对此进行抽丝剥茧…...

如何在 Visual Studio Code 中使用 DeepSeek R1 和 Cline?

让我们面对现实吧&#xff1a;像 GitHub Copilot 这样的 AI 编码助手非常棒&#xff0c;但它们的订阅费用可能会在你的钱包里烧一个洞。进入 DeepSeek R1 — 一个免费的开源语言模型&#xff0c;在推理和编码任务方面可与 GPT-4 和 Claude 3.5 相媲美。将它与 Cline 配对&#…...