cmake:基础
本文主要探讨cmake语法相关知识。
cmake(GUI)安装
apt install cmake-curses-gui cmake -y
cmake语法
cmake_minimum_required(VERSION 版本号)
设置cmake最低版本
project(工程名) <==> PROGECT_NAME/CMAKE_PROJECT_NAME
设置工程名字
add_library(库名 SHARED/STATIC 源码)
编译生成库文件,默认生成静态库
add_executable(程序名 源码)
生成可执行程序
include_directories(path)
添加头文件路径
message(mode "message")
打印编译信息
FATAL_ERROR:出错停止编译和生成
SEND_ERROR:出错继续编译和生成
WARNING:告警继续编译
AUTHOR_WARNING:开发者警告继续编译
DEPRECATION:设置CMAKE_ERROR_DEPRECATED为true编译出错
(none) or NOTICE:用于打印消息
STATUS:编译状态信息,默认消息显示级别
DEBUG:调试信息
TRACE:日志级临时信息(详细)
CHECK_START:开始记录检查消息
CHECK_PASS:记录检查的成功结果
CHECK_FAIL:记录检查的失败结果
--log-level 参数用于指定消息打印最低级别
set(VAR_NAME var)/unset(VAR__NAME)
设置/删除变量
CMake给c++传递变量
add_definitions(-D PARAM)
PARAM默认值是1CMAKE_CURRENT_LIST_DIR 当前CMakeList.txt完整路径
CMAKE_CURRENT_LIST_LINE 当前所在行
CMAKE_C_FLAGS C编译参数
CMAKE_CXX_FLAGS C++编译参数
DCMAKE_BUILD_TYPE 设置Debug/Release
BUILD_SHARED_LIBS 动态启用库变量
CMAKE_SYSTEM_NAME 系统名
PROJECT_SOURCE_DIR/CMAKE_SOURCE_DIR 顶层目录
PROJECT_BINARY_DIR/CMAKE_BINARY_DIR 顶层缓存目录
CMAKE_CURRENT_SOURCE_DIR 当前源码所在路径
CMAKE_CURRENT_BINARY_DIR 当前缓存目录
CMAKE_RUNTIME_OUTPUT_DIRECTOR 执行文件输出路径
EXECUTABLE_OUTPUT_PATH 执行文件输出路径
LIBRARY_OUTPUT_PATH 动态库文件输出路径
CMAKE_LIBRARY_OUTPUT_DIRECTORY 动态库文件输出路径
CMAKE_ARCHIVE_OUTPUT_DIRECTORY 静态态库文件输出路径
ARCHIVE_OUTPUT_DIRECTORY 静态态库文件输出路径
CMAKE_C_COMPILTER C编译工具链
CMAKE_CXX_COMPILTER C++编译工具链
CMAKE_MAJOR_VERSION cmake主版本号
CMAKE_MINOR_VERSION cmake次版本号
CMAKE_VERSION cmake版本号(主次)
PROJECT_VERSION_MAJOR 工程主版本号
PROJECT_VERSION_MINOR 工程次版本号
PROJECT_VERSION 工程版本号(主次)
include(file.cmake OPTIONAL RESULT_VARIABLE ret)
导入子cmake,OPTIONAL参数使文件不存在不出错
ret为NOTFOUND不存在文件,FOUND存在文件
aux_source_directory(目录 变量)
将目录下的文件存入变量
file
file(WRITE/APPEND filename "message")
WRITE文件存在覆盖写入,文件不存在创建写入
APPEND追加吸入
file(READ filename var num offset HEX)
READ以HEX读文件从offset开始读num字节存储在var中file
file(GLOB VAR path/*.h)
读取path录下的.h文件列表存入VAR
file(GLOB_RECURSE VAR path *.c)
读取path及子目录下的.c文件列表存入VAR
逻辑比较:NOT,AND,OR
大小比较:EQUAL,LESS,LESS_EQUAL,GREATER,GREATER_EQUAL
字符串比较:STR_EQUAL...
版本比较:VERSION_EQUAL...
if(COMMAND name)name是命令,宏,函数为true
if(TEST test)add_test创建测试为true
if(DEFINED name)定义普通,缓存,环境变量为true
if(EXISTS file/directory)文件或目录(全路径)存在为true
if(file1 IS_NEWER_THAN file2)file1比file2新/两文件中一个不存在则为true
if(IS_DIRECTORY directory)是目录为true
if(IS_SYMLINK file)是符号链接为true
if(IS_ABSOLUTE path)是绝对路径为true
缓存
缓存可在构建中重新加载运行
set(VAR var CACHE BOOL "test_cache")
定义缓存变量
BOOL 存储布尔值
PATH 存储路径
STRING 存储字符串
FILEPATH 存储文件路径
INTERNAL 内部变量不在缓存显示
ccmake -B test(GUI)
cmake -S . -B test -D VAR=new_var
修改缓存变量
属性
set_property(GLOBAL|DIRECTORY|TARGET|SOURCE|INSTALL|TEST|CACHE PROPERTY name value)
get_property(var GLOBAL|DIRECTORY|TARGET|SOURCE|INSTALL|TEST|CACHE PROPERTY name)
数学运算
math(EXPR var "expression" OUTPUT_FORMAT format)
HEXADECIMAL 16进制
DECIMAL 10进制
字符串处理
string(FIND <string> <substring> <out-var> [...])
string(REPLACE <match-string> <replace-string> <out-var> <input>...)
string(REGEX MATCH <match-regex> <out-var> <input>...)
string(APPEND <string-var> [<input>...])
string(TOLOWER <string> <out-var>)
string(TOUPPER <string> <out-var>)
string(LENGTH <string> <out-var>)
string(SUBSTRING <string> <begin> <length> <out-var>)
string(STRIP <string> <out-var>)
string(ASCII <number>... <out-var>)
string(HEX <string> <out-var>)
string(TIMESTAMP <out-var> [<format string>] [UTC])
list
set(listName var1 var2 var3...)
list(APPEND listName element1 [element2 ...]) 尾部追加
list(INSERT listName index element1 [element2 ...]) 指定位插入
list(REMOVE_ITEM listName element1 [element2 ...]) 移除元素
list(REMOVE_AT listName index) 移除指定位元素
list(LENGTH listName outputVariable) 获取列表长度
list(GET listName index outputVariable) 获取列表指定位元素
list(FIND listName value outputVariable) 查找列表首次出现该值的位置
list(REVERSE listName) 反转列表
foreach
foreach(<loop_var> <items>)
foreach(<loop_var> RANGE <start> <stop> [<step>])
foreach(<loop_var> IN [LISTS [<lists>]] )
foreach(<loop_var> IN [ITEMS [<items>]])
foreach(<loop_var> IN ZIP_LISTS <lists>)
<commands>
endforeach()
while
while(<condition>)
<commands>
endwhile()
宏
名称大小写不敏感
在调用处展开类似inline
macro(foo arg1 arg2)
<commands>
endmacro()
ARGC参数个数
ARGV0/ARGV1/ARGV2参数
函数
function(func arg1 arg2)
<commands>
endfunction(func)
func(param1 param2)
表达式生成器
包含多参数时满足一个则成立
$<BOOL:string>
$<AND:{条件1}[,{条件2}]...>
$<OR:{条件1}[,{条件2}]...>
$<NOT:{条件}>
$<EQUAL:{数值1},{数值2}>
$<STREQUAL:{字符串1},{字符串2}>
$<IN_LIST:{字符串},{列表}>
$<VERSION_LESS:{版本号1},{版本号2}>
$<VERSION_LESS_EQUAL:{版本号1},{版本号2}>
$<VERSION_EQUAL:{版本号1},{版本号2}>
$<VERSION_GREATER_EQUAL:{版本号1},{版本号2}>
$<VERSION_GREATER:{版本号1},{版本号2}>
$<TARGET_EXISTS:{构建目标}>
$<CONFIG:{构建模式1}[,{构建模式2}]...>
$<PLATFORM_ID:{操作系统1}[,{操作系统2}]...>
$<C_COMPILER_ID:{编译器1}[,{编译器2}]...>
$<CXX_COMPILER_VERSION:{版本号}...>
$<COMPILE_FEATURES:{编译特性1}[,{编译特性2}]...>
$<COMPILE_LANGUAGE:{编程语言1}[,{编程语言2}]...>
$<JOIN:{列表字符串},{分隔符}>
$<JOIN:1;2;3,$<COMMA>> ==> 1,2,3
$<ANGLE-R> 为">"
$<COMMA> 为","
$<SEMICOLON> 为";"
$<LOWER_CASE:{字符串}> 转小写
$<UPPER_CASE:{字符串}> 转大写
$<TARGET_NAME_IF_EXISTS:{目标}> 文件绝对路径
$<TARGET_FILE:{目标}> 二进制文件绝对路径
$<TARGET_FILE_BASE_NAME:{目标}> 基本名称 base
$<TARGET_FILE_PREFIX:{目标}> 前缀lib
$<TARGET_FILE_SUFFIX:{目标}> 后缀.so
$<TARGET_FILE_NAME:{目标}> 文件名称 libbase.so
$<TARGET_FILE_DIR:{目标}> 目录名称
$<TARGET_PROPERTY:{目标},{目标属性}> 属性值
$<TARGET_PROPERTY:{目标属性}> 目标属性
target_include_directories
target_include_directories(<target> [SYSTEM] [AFTER|BEFORE]
<INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE>
[items2...] ...])
AFTER/BEFORE 添加目录追到头列表/尾列表
SYSTEM 添加到系统目录
INTERFACE 只有依赖者引用
PUBLIC 依赖者和自己都引用
PRIVATE 只有自己用
target_link_libraries
target_link_libraries(<target> <PRIVATE|PUBLIC|INTERFACE> <item>... )
INTERFACE 只有依赖者引用
PUBLIC 依赖者和自己都引用
PRIVATE 只有自己用
target_compile_definitions
编译传递宏
target_compile_definitions(<target> <INTERFACE|PUBLIC|PRIVATE> [items1...])
target_compile_definitions(test_cmake PUBLIC "-DPI=3.14")
target_compile_features
设置c/c++版本
target_compile_features(test_cmake PUBLIC cxx_std_11)
add_library
add_library(<name> [STATIC|SHARED|MODULE] [EXCLUDE_FROM_ALL] [source1] [source2] [...])
配置Debug/Release
set_target_properties(cmath PROPERTIES DEBUG_POSTFIX "d")
设置debug文件后缀
set(CMAKE_BUILD_TYPE Debug)
Debug: -g
Release: -O3
RelWithDebInfo: -O2 -g
MinSizeRel: -Os
cmake -S . -B test -D CMAKE_BUILD_TYPE=Release
cmake -S . -B test && ccmake -B test
install
install(DIRECTORY doc_src DESTINATION doc_dest FILES_MATCHING PATTERN "*.txt" PATTERN "*.html" EXCLUDE "dir" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ)
install(CODE [=[ string(TIMESTAMP now "%Y-%m-%d %H:%M:%S") FILE(APPEND install.log "${now}\n")]=])
install(TARGETS cmake_bin DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ)
install(TARGETS cmake_lib LIBRARY DESTINATION lib PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ)
install(FILES logo.png DESTINATION ${CMAKE_INSTALL_DOCDIR}/pic PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ)
install(SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/cmake/install_script.cmake")
demo:
语法测试
文件结构
代码示例
run.sh
#!/bin/bashcmake -S . -B test --log-level DEBUG -D CACHE_VAR=1 -D CMAKE_BUILD_TYPE=Debugcmake --build testcd test && make installcd ..$(pwd)/bin/test_cmake
clean.sh
#!/bin/bashrm -rf test install.log lib include config doc readme.txt bin
CMakeLists.txt
cmake_minimum_required(VERSION 3.0)project(test_cmake)message("================test message=============")message(DEBUG "projetc : ${PROJECT_NAME}")
set(PARAM "hello")
message(CHECK_START "find PARMA")
if(PARAM)message(CHECK_PASS "define PARAM")
else()message(CHECK_FAIL "not define PARAM")
endif()message("================test param=============")message("CMAKE_CURRENT_LIST_DIR : ${CMAKE_CURRENT_LIST_DIR}")
message("CMAKE_CURRENT_LIST_LINE : ${CMAKE_CURRENT_LIST_LINE}")
message("CMAKE_SYSTEM_NAME : ${CMAKE_SYSTEM_NAME}")
message("PROJECT_SOURCE_DIR : ${PROJECT_SOURCE_DIR}")
message("PROJECT_BINARY_DIR : ${PROJECT_BINARY_DIR}")
message("CMAKE_VERSION : ${CMAKE_VERSION}")add_definitions(-D TEST_PARAM)add_definitions(-D TEST_NUM=27)message("================test include=============")include(${PROJECT_SOURCE_DIR}/math/test.cmake OPTIONAL RESULT_VARIABLE ret)
if(ret)message("found , ret : ${ret}")
else()message("not found , ret : ${ret}")
endif()message("================test file=============")file(WRITE readme.txt [=[
##############CMAKE TESTAUTHOR : cxb
]=])file(APPEND readme.txt [=[ TIME : 2025-06-26##############
]=])file(GLOB FILE_H ${PROJECT_SOURCE_DIR}/include/*.h)file(GLOB_RECURSE SRC_C ./ *.c)file(WRITE file.txt ${SRC_C})file(APPEND file.txt ${FILE_H})file(READ file.txt CONTEXT 1024 0)message("file.txt : ${CONTEXT}")file(REMOVE file.txt)message("================test cache=============")set(CACHE_VAR 0 CACHE BOOL "test_cache")
if(CACHE_VAR)message("CACHE_VAR : ${CACHE_VAR}")
else()message("CACHE_VAR : ${CACHE_VAR}")
endif()message("================test if=============")
if(NOT WIN32)message("system : LINUX")
endif()if(DEFINED CACHE_VAR)message("CACHE_VAR existed")
endif()if(EXISTS ./math/src/math.cpp)message("./math/src/math.cpp existed")
endif()message("================test math=============")math(EXPR test_all "1 + 1" OUTPUT_FORMAT HEXADECIMAL)message("test_all : ${test_all}")message("================test lib=============")add_subdirectory(math)include_directories(include)set(EXEC_SRC ${PROJECT_NAME}.cpp)add_executable(${PROJECT_NAME} ${EXEC_SRC})set(CMAKE_PREFIX_PATH "${PROJECT_SOURCE_DIR}/math")find_package(math)message("math_FOUND = ${math_FOUND}")if(math_FOUND)message("find math success!")endif()target_link_libraries(${PROJECT_NAME} math)message("================test property=============")set_property(GLOBAL PROPERTY TEST_GLOBAL "test1")set_property(GLOBAL APPEND PROPERTY TEST_GLOBAL "test2")get_property(test_g GLOBAL PROPERTY TEST_GLOBAL)message("test_g : ${test_g}")set_property(DIRECTORY . PROPERTY SRC_DIR "${PROJECT_SOURCE_DIR}") get_property(cur_dir DIRECTORY . PROPERTY SRC_DIR)message("cur_dir : ${cur_dir}")set_property(SOURCE math.cpp PROPERTY SRC_NAME "math.cpp")get_property(src_name SOURCE math.cpp PROPERTY SRC_NAME)message("src_name : ${src_name}")set_property(TARGET ${PROJECT_NAME} PROPERTY OBJ_VAR "test_cmake")get_property(target_name TARGET ${PROJECT_NAME} PROPERTY OBJ_VAR)message("target_name : ${target_name}")message("================test install=============")install(TARGETS ${PROJECT_NAME} DESTINATION ${PROJECT_SOURCE_DIR}/bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)install(FILES readme.txt DESTINATION ${PROJECT_SOURCE_DIR}/doc PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)string(TIMESTAMP now "%Y-%m-%d %H:%M:%S") FILE(APPEND install.log "${now} build math project\n")
test_cmake.cpp
#include <iostream>#include "math.h"int main()
{#ifdef TEST_PARAMstd::cout << "TEST_PARAM : " << TEST_PARAM << std::endl;#endif#ifdef TEST_NUMstd::cout << "TEST_NUM : " << TEST_NUM << std::endl;#endifint all = add_num(1, 1);std::cout << "all : " << all << std::endl;std::cout << "test cmake" << std::endl;return 0;
}
math/CMakeLists.txt
cmake_minimum_required(VERSION 3.0)aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src MATH_SRCS)include_directories(include)option(BUILD_SHARED_LIBS "shared lib or static lib" OFF)add_library(math $<$<CONFIG:$<BOOL:${BUILD_SHARED_LIBS}>>:SHARED> ${MATH_SRCS})set_target_properties(math PROPERTIES PUBLIC_HEADER include/math.h)target_include_directories(math PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> #install时为空,只有编译时有值$<INSTALL_INTERFACE:include> #只有install时有值
)install(TARGETS math EXPORT mathLIBRARY DESTINATION ${PROJECT_SOURCE_DIR}/libARCHIVE DESTINATION ${PROJECT_SOURCE_DIR}/libPUBLIC_HEADER DESTINATION ${PROJECT_SOURCE_DIR}/include
)install(EXPORT math FILE mathConfig.cmake DESTINATION ${PROJECT_SOURCE_DIR}/config)
math/mathConfig.cmake
set(HEADS_PATH ${PROJECT_SOURCE_DIR}/math/include)set(LIB_PATH ${PROJECT_SOURCE_DIR}/math)
math/test.cmake
message("in cmake/src")
include/math.h
#ifndef __CAMTH_H__
#define __CAMTH_H__int add_num(int num1, int num2);#endif
src/math.cpp
#include "math.h"int add_num(int num1, int num2)
{return num1 + num2;
}
编译执行结果示例
清理执行结果示例
相关文章:
cmake:基础
本文主要探讨cmake语法相关知识。 cmake(GUI)安装 apt install cmake-curses-gui cmake -y cmake语法 cmake_minimum_required(VERSION 版本号) 设置cmake最低版本 project(工程名) <> PROGECT_NAME/CMAKE_PROJECT_NAME 设置工程名字 add_library(库名 SHARED/STAT…...
1.8 点云数据获取方式——小结
点云,作为三维空间信息的直观载体,在各行各业都得到了广泛应用。而能够获得三维点云数据手段,也是极为丰富。本章节主要介绍了主动式手段(包括激光雷达、ToF相机、结构光相机)和被动式手段(双目立体相机、单…...
超越单体:进入微服务世界与Spring Cloud概述
大家好!欢迎来到我的新系列文章——《微服务架构:Spring Cloud实战指南》。在之前的《Java服务端核心技术》系列中,我们一起深入学习了如何使用Spring Boot构建功能强大、安全可靠的单体应用程序。我们掌握了Spring的核心原理、Web开发、数据…...
深度学习篇---模型权重变化与维度分析
文章目录 前言1. 权重的作用2. 权重的维度全连接层卷积层3. 权重的变化4.实例代码(PyTorch 框架)场景代码解释模型定义数据生成优化设置初始权重设置训练循环前向传播反向传播更新权重结果输出维度与变化总结维度匹配梯度跟新5. 增加网络深度:多层感知机(MLP)代码解释6. 权…...
AtCoder Beginner Contest 403(题解ABCDEF)
A - Odd Position Sum #1.奇数数位和 #include<iostream> #include<vector> #include<stdio.h> #include<map> #include<string> #include<algorithm> #include<queue> #include<cstring> #include<stack> #include&l…...
计算机视觉与深度学习 | 双目立体匹配算法理论+Opencv实践+matlab实践
双目立体匹配 一、双目立体匹配算法理论与OpenCV、matlab实践一、双目立体匹配理论二、OpenCV实践三、优化建议四、算法对比与适用场景二、双目立体匹配算法理论及Matlab实践指南一、双目立体匹配理论二、Matlab实践步骤三、算法对比与优化建议四、完整流程示例五、常见问题与解…...
深挖Java基础之:认识Java(创立空间/先导:Java认识)
今天我要介绍的是在Java中对Java的一些基本语法的认识与他们的运用,以及拟举例子说明和运用场景,优势和劣势, 注:本篇文章是对Java的一些基本的,简单的代码块的一些内容,后续会讲解在Java中的变量类型&…...
springmvc从请求到响应的流程分析
一、创建springmvc项目 通过网盘分享的文件:hello-springmvc.zip 链接: https://pan.baidu.com/s/1VmUHurgph661ND9LWqKhaw 提取码: b36a 二、从请求到响应流程 我们先画一下流程图,如下图所示。 三、源码解析 3.1 HttpServlet接收请求 用户发送htt…...
RabbitMQ 启动报错 “crypto.app“ 的解决方法
RabbitMQ 启动报错 “crypto.app” 的解决方法 在使用 RabbitMQ 时,有时会遇到启动报错的问题,其中一种常见的报错是: {"init terminating in do_boot",{error,{crypto,{"no such file or directory","crypto.app…...
idm 禁止自动更新提示(修改注册表)
目前版本:v 6.42 Bulid 35 运行-regedit- 计算机\HKEY_CURRENT_USER\SOFTWARE\DownloadManager 计算机\HKEY_CURRENT_USER\SOFTWARE\DownloadManagerLstCheck -> 0 重启...
LeetCode - 02.02.返回倒数第 k 个节点
目录 题目 解法一 双指针算法 原理 详细过程 为什么它有效? 时间复杂度与空间复杂度 代码 解法二 递归算法 核心思想 执行流程详解 具体例子 代码 题目 面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode) 解法一 双指针算…...
<c++>使用detectMultiScale的时候出现opencv.dll冲突
最近在试着弄一下opencv,看网上很多人都是的用的python,但是python跑起来没有c快,生成的qt工程也大一些,想着试试c看能不能生成opencv。然后就用到这个函数,detectMultiScale。 出现一个问题,就是我的程序在…...
从实列中学习linux shell脚本2: shell 的变量 方法 命名和使用规则之类 比如拿:获取cpu 负载,以及负载超过2.0 以后就发生邮件为例子
以下是对 Linux Shell 中变量、方法(函数)、命名规则的详细说明,并结合 获取CPU负载并在负载超过2.0时发送邮件 的示例进行演示: 1. Shell 变量 命名规则 命名格式:变量名由字母、数字、下划线组成,不能以…...
Centos Ubuntu RedOS系统类型下查看系统信息
文章目录 一、项目背景二、页面三、说明四、代码1.SysInfo2.EmsSysConfig3.HostInformationController4.HostInfo 一、项目背景 公司项目想展示当前部署系统的:操作系统,软件版本、IP、主机名。 二、页面 三、说明 说明点1:查询系统类型及…...
【Hive入门】Hive高级特性:视图与物化视图
在大数据分析中,Hive作为Hadoop生态系统中的重要组件,提供了强大的数据查询和管理能力。除了基本表的操作,Hive还支持 视图和 物化视图,这两种特性在数据管理和查询优化中扮演着重要角色。本文将深入探讨视图的创建与性能影响&…...
特征工程四-2:使用GridSearchCV 进行超参数网格搜索(Hyperparameter Tuning)的用途
1. GridSearchCV 的作用 GridSearchCV(网格搜索交叉验证)用于: 自动搜索 给定参数范围内的最佳超参数组合。交叉验证评估 每个参数组合的性能,避免过拟合。返回最佳模型,可直接用于预测或分析。 2. 代码逐行解析 (1…...
【Hive入门】Hive函数:内置函数与UDF开发
Apache Hive作为Hadoop生态系统中的重要组件,为大数据分析提供了强大的SQL-like查询能力。Hive不仅支持丰富的内置函数,还允许用户开发自定义函数(UDF)以满足特定需求。本文将深入探讨Hive的内置函数(包括数学函数、字…...
HTML Picture标签详细教程
HTML Picture标签详细教程 简介 <picture>标签是HTML5中引入的一个强大元素,它为开发者提供了更灵活的图像资源管理方式。该标签主要用于让浏览器根据不同条件(如设备屏幕大小、分辨率或支持的图像格式)选择最适合当前显示环境的图像…...
Html1
一,HTML概述 网页开发需要学习的知识: html css javaScript 两个框架 VUE.js ElementUI UI user interface 用户界面 HTML xml 可扩展标记语言-->存储数据 Markup Language标签语言都会提供各种标…...
runpod team 怎么设置自己的ssh key呢?
生成 ed25519 公钥密钥 ssh-keygen -t ed25519 -C "yourqq.com"然后在pod容器配置key以及启动方式 选择edit pod 添加启动代码 启动代码可以参考官方给的内容: https://docs.runpod.io/pods/configuration/use-ssh bash -c apt update;DEBIAN_FRONT…...
Flutter:组件10、倒计时
import dart:async; import package:flutter/material.dart;class CountdownTimer extends StatefulWidget {final int seconds;final double? fontSize;final Color? textColor;final bool showDays;final bool showHours;final bool showMinutes;final bool showSeconds;fi…...
存储器分类
按宏观分类 内部存储:用于临时存储当前程序运行所需要的数据外部存储:指硬盘,用于存储需要保存下的数据 按存储功能分 磁盘存储器(Disk),如机械硬盘非易失性存储器(Flash memory),分为固态硬…...
案例解析:基于量子计算的分子对接-QDOCK(Quantum Docking)
分子对接(Moleculardocking)在药物发现中具有重要意义,但对接的计算速度和准确率始终难以平衡,其巨大解搜索空间对传统计算机来说异常艰巨。 本文通过引入网格点匹配(GPM, Grind point matching)和特征原子…...
人工智能和机器学习在包装仿真中的应用与价值
引言 随着包装成为消费品关键的差异化因素,对智能设计、可持续性和高性能的要求比以往任何时候都更高 。为了满足这些复杂的期望,公司越来越多地采用先进的仿真方法,而现在人工智能 (AI) 和机器学习 (ML) 又极大地增强了这些方法 。本文探讨…...
系统的环境变量
目录 基本概念 用途之一 环境变量表 命令行参数表 理解 更多的环境变量 基本概念 环境变量(environmentvariables)⼀般是指在操作系统中⽤来指定操作系统运⾏环境的⼀些参数。环境变量通常具有某些特殊⽤途,还有在系统当中通常具有全局特性 用途之一 我们看…...
css3伸缩盒模型第一章(主轴以及伸缩盒模型)
css3伸缩盒模型第一章(主轴) 一、伸缩盒模型简介 2009 年, W3C 提出了一种新的盒子模型 —— Flexible Box (伸缩盒模型,又称:弹性盒 子)。它可以轻松的控制:元素分布方式、元素对齐方式、元素视觉顺序 ……...
【MySQL】(9) 视图
一、什么是视图 视图是一张虚拟表,是表、其它视图的查询结果集。它本身不像基础表(物理表)一样存储数据,而是将 SQL 查询语句包装起来,通过执行查询语句动态生成数据。 二、视图的作用 当我们需要频繁使用一条查询语句…...
day10 python机器学习全流程实践
在机器学习的实践中,数据预处理与模型构建是极为关键的环节。本文将回顾数据预处理的全流程,并基于处理后的数据完成简单的机器学习建模与评估,暂不涉及复杂的调参过程。 一、预处理流程回顾 机器学习的成功,很大程度上依赖于高…...
Rust Ubuntu下编译生成环境win程序踩坑指南
前言: 1,公司要给一线搞一个升级程序,需要在win下跑。 之前都是找开发总监帮忙,但是他最近比较忙。就让我自己搞。有了下文.。说来惭愧,之前写过一篇ubuntu下编译windows的文章。里面的demo就一句话 fuck world。依赖…...
2025年- H12-Lc119-56.合并区间(普通数组)---java版
1.题目描述 2.思路 思路参考了代码随想录: 按照左边界从小到大排序之后,如果 intervals[i][0] < intervals[i - 1][1] 即intervals[i]的左边界 < intervals[i - 1]的右边界,则一定有重叠。(本题相邻区间也算重贴ÿ…...
合并两个有序链表
题目:21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入&#x…...
rsync命令详解与实用案例
rsync命令详解与实用案例 rsync是一款功能强大的Linux文件同步工具,通过高效的增量传输算法,能够显著减少数据传输量和时间,是备份、镜像和跨平台文件同步的理想选择。其核心价值在于只传输文件的差异部分,而非全量复制ÿ…...
gitee 如何修改提交代码的邮箱
gitee 如何修改提交代码的邮箱 1. 修改全局提交邮箱2. 修改特定仓库的提交邮箱3. 修改已提交记录的邮箱 4. 可能遇到的问题git filter-repo 拒绝执行解决办法方法一:使用 --force 参数 (亲测有效)方法二:创建一个全新的克隆仓库 注…...
MATLAB画一把伞
% 伞的参数num_ribs 5; % 伞骨数量修改为5R 1; % 伞的半径height 0.5; % 伞的高度handle_length 2; % 伞柄长度semicircle_radius 0.26; % 伞柄末端半圆的半径% 生成伞叶网格theta linspace(0, 2*pi, 100);phi linspace(0, pi/2, 50);[Theta, Phi] meshgrid(theta, phi…...
vue 实现文件流下载功能 前端实现文件流下载
首先场景就是,一般的文件下载是通过后端返回的文件地址下载文件,但当后端返回的是文件流的时候,下载要做特殊处理 案例截图: 下载成功: 代码处理,首先就是要在接口封装的地方加上 在 Vue 前端开发中实现文件流下载与普通文件下载的核心区别在于 数据处理方式。文件流…...
[Android]导航栏中插入电源菜单
1. 新增 frameworks/base/packages/SystemUI/res/layout/power.xml <?xml version"1.0" encoding"utf-8"?> <com.android.systemui.navigationbar.buttons.KeyButtonView xmlns:android"http://schemas.android.com/apk/res/android"…...
VSCode Verilog环境搭建
VSCode Verilog环境搭建 下载Iverilog安装Iverilog验证安装VS Code安装插件 下载Iverilog 官网下载Iverilog 安装Iverilog 一定要勾选这两项 建议勾选这两项 验证安装 运行Windows PowerShell输入命令:iverilog输入命令:Get-Command gtkwave …...
Hadoop 和 Spark 生态系统中的核心组件
通过jps命令,可以看到如下进程名,请解释一下它们各自是哪个命令产生的,有什么作用?一、Worker 1.来源:Spark 集群的 工作节点(Worker Node),由 start-worker.sh 启动 2.作用&#…...
MySQL多表操作
熟能生巧,全部代码在最后!!! 一、多表关系 一对一关系、一对多关系、多对多关系 注意多对多关系必须有中间表进行关联 多对多的关系就相当于是两个一对多关系 二、创建外键约束 专门用于多表操作的一种约束方式 控制的那个表…...
WPF TextBlock控件性能优化指南
WPF TextBlock控件性能优化指南 1. 引言 TextBlock作为WPF中最基础且使用最广泛的文本显示控件,其性能优化对整个应用程序的响应速度和资源占用有着重要影响。尽管TextBlock是一个轻量级控件,但在大型应用或需要显示大量文本的场景中,不恰当…...
DotNet 入门:(一) 环境安装
一、前言 本想用 Go 语言实现一个通过小爱同学操作电脑的,比如我对着手机说打开音乐,或调小音乐,电脑能做相应的处理。奈何我一时间没看懂,就想着用.Net 来试一下,于是就有了下面这篇文章。 二、安装.Net 环境 1. 下…...
初识Redis · 分布式锁
目录 前言: 分布式锁 setnx lua脚本和看门狗 redlock算法 Redlock 的加锁流程(5 步) 前言: 到了分布式锁这一章之后,我们首先能联想到的问题就是线程安全的问题,线程安全指的是多个线程在并发执行的…...
使用 OpenCV 实现图像中心旋转
在图像处理中,围绕中心点旋转图像是一个常见的需求。无论是为了数据增强、视觉效果,还是图像对齐,旋转图像都是一项基础且重要的操作。本文将详细介绍如何使用 OpenCV 实现围绕图像中心旋转的功能,并深入探讨其背后的数学原理。 一…...
云钥科技红外短波工业相机
云钥科技的红外短波相机是一款基于短波红外(SWIR,波长范围约1-3微米)技术的成像设备,专为高精度检测、全天候成像及特殊场景应用设计。以下从核心技术、性能参数、应用场景及产品优势等方面进行详细介绍: 一、核心…...
npm如何安装pnpm
在 npm 中安装 pnpm 非常简单,你可以通过以下步骤完成: 1. 使用 npm 全局安装 pnpm 打开终端(命令行工具),运行以下命令: npm install -g pnpm2. 验证安装 安装完成后,可以检查 pnpm 的版本以确保安装成功: pnpm --version如果正确显示版本号(如 8.x.x),说明安…...
GTC Taipei 2025 医疗域前瞻:从AI代理到主权生态,解码医疗健康与生命科学的未来图景
引言 2025年,全球医疗健康领域正经历一场由人工智能、机器人技术与分布式计算驱动的范式转移。随着NVIDIA及其生态伙伴在GTC Taipei 2025大会上的深度布局,医疗行业的核心趋势愈发清晰:AI代理程序(Digital AI Agents)赋能临床协作、医疗大数据与精准医学加速落地、医学影…...
【AI学习】李宏毅新课《DeepSeek-R1 这类大语言模型是如何进行「深度思考」(Reasoning)的?》的部分纪要
针对推理模型,主要讲了四种方法,两种不需要训练模型,两种需要。 对于reason和inference,这两个词有不同的含义! 推理时计算不是新鲜事,AlphaGo就是如此。 这张图片说明了将训练和推理时计算综合考虑的关系&…...
npm打包内存不足- JavaScript heap out of memory
直接贴出报错信息 <--- Last few GCs --->[30904:0000010F60FE58E0] 22090 ms: Scavenge 2037.4 (2069.4) -> 2036.4 (2074.2) MB, 2.5 / 0.0 ms (average mu 0.228, current mu 0.216) allocation failure [30904:0000010F60FE58E0] 22101 ms: Scavenge 2…...
【最新 MCP 战神手册 08】工具使用详解:实现 AI 行动
文章目录 1. 开始啦!2. 第一部分:设计高效且安全的工具3. 第二部分:定义工具蓝图——参数、输出与约束条件4. 第三部分:弥合差距:LLM 兼容性(函数调用)5. 第四部分:实施与测试的最佳实践1. 开始啦! 在前几章中,我们将工具介绍为 AI 模型在 MCP 客户端引导下向 MCP 服…...
开发iOS App时,我常用的一款性能监控小工具分享
开发iOS App时,我常用的一款性能监控小工具分享 最近在做一个iOS应用的性能优化,频繁遇到内存泄露、界面卡顿和网络请求超时的问题。平时用Xcode Instruments虽然专业,但流程繁琐,临时排查问题不够灵活。 于是开始找有没有轻量一…...