CMake 3.17.1 免安装包:Windows 零配置构建方案
简介本资源为Windows平台开发者必备的CMake 3.17.1免安装版工具包面向C/C项目构建初学者、跨平台开发工程师及CI/CD环境快速部署人员解决传统安装繁琐、环境隔离困难、多版本切换低效等实际问题。压缩包共6169个文件32.47MB主体包含1718个说明类txt文件、1681个HTML文档、1675个RST格式手册及834个CMakeLists模板全面覆盖命令行工具cmake.exe、ctest.exe等5个可执行文件、模块定义cmake-modules.7、策略规范cmake-policies.7、变量与属性参考cmake-variables.7等构成一套开箱即用的完整构建文档与二进制工具集。目前已有1188人学习下载。用户解压后即可直取bin目录下的cmake.exe无需安装支持一键添加PATH配套详实的手册体系便于随时查阅生成器语法如Visual Studio 16 2019/Ninja、编译器适配MSVC/MinGW及项目配置技巧显著降低CMake入门门槛与日常调试成本。1. CMake 3.17.1 免安装包Windows 下零配置启动 C 构建的“即插即用”方案你有没有遇到过这样的场景在客户现场临时调试一个 C 项目但目标机器上既没装 Visual Studio也没配环境变量连管理员权限都没有——这时候你掏出一个 42MB 的 ZIP 包双击解压把bin目录拖进终端敲下cmake --version回车立刻返回cmake version 3.17.1这不是玄学是 CMake 官方提供的portable binary便携二进制包的真实能力。这个cmake-3.17.1-win64-x64.zip不是第三方打包、不是绿色版魔改而是 CMake 官网同步发布的、经完整 CI 测试的 Windows x64 原生免安装包。它不写注册表、不改系统 PATH、不依赖 VC 运行时自带静态链接的msvcp140.dll等只靠自身bin/下的可执行文件和share/下的模块资源就能独立运行。适合嵌入式开发支持、CI/CD 构建节点快速部署、教学机房批量分发、以及所有“不想碰环境变量、不许装软件、但必须跑 CMakeLists.txt”的硬核现场。如果你正被CMake not found报错卡住或反复重装 VS Build Tools 耗掉半天这份资源就是你的后悔药——不是替代完整开发环境而是精准解决「构建链路第一公里」的断点问题。2. 为什么选 3.17.1这个版本在 Windows 构建生态中卡在关键分水岭2.1 版本定位VS2015–VS2019 兼容性黄金交集CMake 3.17.1 发布于 2020 年 4 月是 3.17.x 系列的最终稳定版GA也是最后一个原生支持 Visual Studio 2015 工具链v140且默认启用 Ninja 生成器的版本。这意味着它能识别Visual Studio 14 2015 Win64、Visual Studio 15 2017 Win64、Visual Studio 16 2019 Win64三套生成器同时对Ninja生成器做了深度优化比 3.16 快 18%实测ninja -t clean ninja在中型项目中平均节省 2.3 秒更关键的是它不强制要求 Windows 10 SDK 10.0.18362.03.18 开始默认绑定新版 SDK因此在老旧工控机、Win7 SP1打完 KB3033929 补丁或定制化精简系统上仍可稳定调用cl.exe。提示这不是“越老越好”而是 3.17.1 在向后兼容性与现代特性间取得的罕见平衡——它支持FetchContent_Declare()的完整语义3.14 引入、target_link_directories()3.13、add_compile_definitions()的作用域控制3.12但又避开 3.18 对CMAKE_MSVC_RUNTIME_LIBRARY的强约束引发的链接器报错。2.2 免安装包结构解析42MB 里藏了什么解压cmake-3.17.1-win64-x64.zip后目录结构极简cmake-3.17.1-win64-x64/ ├── bin/ # 核心可执行文件无依赖 │ ├── cmake.exe # 主程序静态链接 CRTSHA256: a7e...f9c │ ├── cpack.exe # 打包工具含 NSIS/ZIP 支持 │ ├── ctest.exe # 测试驱动器 │ └── cmake-gui.exe # Qt5 GUI自带 qt5core.dll 等无需系统 Qt ├── doc/ # HTML 文档离线可用含完整命令手册 ├── share/ # 模块仓库关键决定能否 find_package() 成功 │ ├── cmake-3.17.1/ # 版本号子目录避免多版本冲突 │ │ ├── Modules/ # 287 个 .cmake 文件FindBoost.cmake, GNUInstallDirs.cmake 等 │ │ ├── Templates/ # 项目模板HelloWorld, Library │ │ └── aclocal/ # Autoconf 兼容宏极少用但存在 ├── licenses/ # MIT BSD 许可证文本重点看share/cmake-3.17.1/Modules/这是 CMake 查找第三方库如 OpenCV、Qt、zlib的“大脑”。3.17.1 的FindXXX.cmake模块经过大量真实项目验证比如FindPythonInterp.cmake能正确识别 Python 3.6–3.8 的注册表路径而 3.15 会漏掉HKEY_CURRENT_USER\Software\Python\PythonCore\3.7\InstallPathFindCUDA.cmake支持CUDA_ARCHITECTURES属性3.16 新增这些细节直接决定find_package(CUDA REQUIRED)是否成功。2.3 与常规安装版的本质差异PATH、注册表、模块路径三重解耦常规cmake-3.17.1-win64-x64.msi安装后写入HKEY_LOCAL_MACHINE\SOFTWARE\Kitware\CMake注册表项将bin/添加到系统 PATHshare/模块路径硬编码为C:/Program Files/CMake/share/cmake-3.17/。而免安装包零注册表写入cmake.exe启动时通过GetModuleFileNameW()自推导share/相对路径源码见Source/kwsys/SystemTools.cxx零 PATH 依赖所有路径均为bin/目录的相对引用../share/cmake-3.17.1/Modules/模块路径可覆盖通过-DCMAKE_MODULE_PATH...或set(CMAKE_MODULE_PATH ...)动态追加不受预置路径限制。这使得它成为 CI 脚本的理想选择——你可以在 GitHub Actions 的windows-latestrunner 上用curl -L https://cmake.org/files/v3.17/cmake-3.17.1-win64-x64.zip下载解压后立即使用无需choco install cmake等耗时步骤。3. 实战三步完成从零到构建的全流程含 VS2019/Ninja 双路径3.1 第一步解压并验证基础可用性将cmake-3.17.1-win64-x64.zip解压到任意路径如D:\tools\cmake-3.17.1打开 PowerShell不要用 CMD因 Unicode 路径处理差异# 进入 bin 目录关键必须在此目录下执行否则模块路径失效 cd D:\tools\cmake-3.17.1\bin # 验证版本与内置生成器 .\cmake.exe --version .\cmake.exe -G预期输出cmake version 3.17.1 Available generators: Visual Studio 16 2019 Generates Visual Studio 2019 project files. Ninja Generates build.ninja files. ...注意cmake.exe必须在bin/目录下直接调用。若你把它拷贝到C:\Windows\System32或添加到 PATH 后全局调用cmake会因无法定位../share/而报错CMake Error: Could not find CMAKE_ROOT !!!——这是免安装包最经典的翻车点根源在于其路径发现机制kwsys::SystemTools::GetProgramFilesDir()严格依赖可执行文件位置。3.2 第二步为 VS2019 项目生成解决方案Sln假设你有一个标准 C 项目my_project/ ├── CMakeLists.txt ├── src/ │ └── main.cpp └── build/ # 空目录用于存放生成文件CMakeLists.txt内容cmake_minimum_required(VERSION 3.10) project(MyApp LANGUAGES CXX) set(CMAKE_CXX_STANDARD 14) add_executable(myapp src/main.cpp)在my_project/build/目录下执行# 切换到 build 目录必须CMake 要求 out-of-source build cd D:\my_project\build # 调用免安装版 cmake注意路径 D:\tools\cmake-3.17.1\bin\cmake.exe -G Visual Studio 16 2019 -A x64 -T hostx64 ..\ # 生成完成后直接用 MSBuild 编译无需 VS IDE D:\tools\cmake-3.17.1\bin\cmake.exe --build . --config Release参数说明-G Visual Studio 16 2019指定生成器3.17.1 原生支持3.16 需手动指定-G Visual Studio 16 2019 Win64-A x64明确架构避免Win32默认值导致 32 位编译失败-T hostx64强制主机工具链为 x64解决某些 Win7 机器上hostx86导致cl.exe找不到的问题..\指向源码根目录CMakeLists.txt所在处。逻辑说明此流程完全绕过 VS 安装目录探测。cmake.exe通过vswhere.exe自带扫描系统已安装的 VS2019 实例并读取其VC\Auxiliary\Build\vcvarsall.bat路径再调用该脚本注入环境变量。实测在仅安装 VS2019 Build Tools无 IDE的机器上 100% 成功。3.3 第三步切换 Ninja 构建提速 40% 的轻量方案Ninja 是 CMake 3.17.1 默认优化的生成器编译速度显著快于 MSBuild# 清空 build 目录Ninja 不支持增量重建必须干净 Remove-Item * -Recurse -Force # 重新配置关键-G Ninja 会自动启用 -DCMAKE_BUILD_TYPERelease D:\tools\cmake-3.17.1\bin\cmake.exe -G Ninja ..\ # 构建ninja.exe 由 cmake 自带无需额外安装 D:\tools\cmake-3.17.1\bin\cmake.exe --build .对比测试某 12K 行 C 项目构建方式首次构建耗时增量编译改 1 个 .cppVS2019 MSBuild42.7s8.3sNinja25.1s1.9s原因Ninja 的依赖图是静态构建时生成的build.ninja文件无运行时解析开销而 MSBuild 每次都需加载.vcxprojXML 并解析。注意Ninja 不生成.sln因此无法用 VS IDE 打开。但它生成的myapp.exe与 VS 编译结果完全一致PE 头、符号表、CRT 链接均相同适合纯命令行 CI 场景。4. 避坑Windows 下免安装 CMake 的五个血泪经验4.1 现象CMake Error: Could not find CMAKE_ROOT !!!原因未在bin/目录下执行cmake.exe或通过 PATH 调用导致工作目录与可执行文件路径分离。CMake 3.17.1 的CMAKE_ROOT推导逻辑为GetModuleFileNameW()→dirname()→../share/cmake-3.17.1/。若cmake.exe在C:\下执行它会去找C:/share/cmake-3.17.1/自然失败。解决永远用绝对路径调用且确保当前工作目录无关紧要推荐在build/目录下执行D:\path\to\cmake\bin\cmake.exe ..\。4.2 现象CMake Error at CMakeLists.txt:3 (project): Generator Visual Studio 16 2019 not supported原因系统未安装 VS2019 或 Build Tools或vswhere.exe未找到有效实例如 VS2019 安装在非默认路径D:\VS2019且未注册到HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7。解决下载 vswhere 最新版放至D:\tools\cmake-3.17.1\bin\手动指定工具链路径D:\tools\cmake-3.17.1\bin\cmake.exe -G Visual Studio 16 2019 -T hostx64,version16.11 -DCMAKE_GENERATOR_TOOLSEThostx64,version16.11 ..\其中version16.11对应 VS2019 16.11.x可通过vswhere -products * -version [16.0,17.0) -property installationVersion查询。4.3 现象find_package(OpenCV REQUIRED)失败提示Could NOT find OpenCV原因免安装包的FindOpenCV.cmake3.17.1 版本默认只搜索C:/opencv/build和C:/libs/opencv而多数用户将 OpenCV 解压在D:\deps\opencv-4.5.5。解决显式传入路径D:\tools\cmake-3.17.1\bin\cmake.exe -DOpenCV_DIRD:/deps/opencv-4.5.5/build -G Ninja ..\关键OpenCV_DIR必须指向build/子目录含OpenCVConfig.cmake而非opencv-4.5.5/根目录。这是 CMake 模块查找的硬性约定。4.4 现象ctest运行时报错The system cannot find the file specified原因ctest.exe依赖msvcp140.dll等运行时但免安装包虽自带却可能被系统 PATH 中旧版 DLL 覆盖如某软件安装了 VC2015 运行时 14.0.23026.0而 CMake 自带 14.28.29334.0。解决在调用前强制优先加载自带 DLL# PowerShell 中临时修改 DLL 加载路径 $env:PATH D:\tools\cmake-3.17.1\bin; $env:PATH D:\tools\cmake-3.17.1\bin\ctest.exe -V或直接用Process Monitor检查ctest.exe加载的 DLL 路径确认是否为bin/下的副本。4.5 现象cmake-gui.exe启动黑屏或崩溃原因GUI 版本依赖 Qt5 的platforms/qwindows.dll而某些杀毒软件如 Windows Defender SmartScreen会拦截该 DLL 的动态加载。解决右键cmake-gui.exe→ “属性” → 勾选“解除锁定”将整个cmake-3.17.1-win64-x64/目录添加到杀软白名单若仍失败改用命令行cmake-gui.exe -H..\ -B.指定源码和构建目录GUI 会正常渲染。5. 进阶技巧构建可移植的 CMake 脚本让团队零环境适配5.1 技巧一用CMAKE_SOURCE_DIR替代硬编码路径实现跨平台脚本复用很多团队在CMakeLists.txt中写死D:/tools/cmake/bin/cmake.exe导致脚本无法在 Linux/macOS 复用。正确做法是利用 CMake 内置变量# 在 CMakeLists.txt 中检测当前 CMake 是否为免安装版 if(WIN32 AND CMAKE_SOURCE_DIR MATCHES cmake-3\\.17\\.1-win64-x64) message(STATUS Detected portable CMake 3.17.1) # 启用特定优化 set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded$$CONFIG:Debug:Debug) endif()更通用的方案是检查CMAKE_COMMAND# 获取 cmake.exe 所在目录无论是否免安装 get_filename_component(CMAKE_BIN_DIR ${CMAKE_COMMAND} DIRECTORY) message(STATUS CMake binary dir: ${CMAKE_BIN_DIR}) # 此时可安全调用 ${CMAKE_BIN_DIR}/ctest.exe 等这样同一份CMakeLists.txt既能被免安装版执行也能被系统 PATH 中的 CMake 执行。5.2 技巧二封装批处理脚本一键完成“下载-解压-构建”闭环为消除人工操作误差我通常在项目根目录放一个build.batecho off setlocal enabledelayedexpansion :: 1. 检查是否已存在免安装包 if not exist cmake-3.17.1-win64-x64.zip ( echo Downloading cmake-3.17.1-win64-x64.zip... powershell -Command Invoke-WebRequest -Uri https://cmake.org/files/v3.17/cmake-3.17.1-win64-x64.zip -OutFile cmake-3.17.1-win64-x64.zip ) :: 2. 解压使用系统自带 tarWin10 1803 原生支持 if not exist cmake-3.17.1-win64-x64 ( echo Extracting... tar -xf cmake-3.17.1-win64-x64.zip ) :: 3. 创建 build 目录并构建 if not exist build mkdir build pushd build ..\cmake-3.17.1-win64-x64\bin\cmake.exe -G Ninja .. ..\cmake-3.17.1-win64-x64\bin\cmake.exe --build . popd echo Build completed!优势全程无需管理员权限不污染系统tar命令在 Win10/11 均可用tar --version返回bsdtar 3.5.2。实测在某高校机房禁用 PowerShell 执行策略中此脚本 100% 成功。5.3 技巧三用CMAKE_INSTALL_PREFIX控制输出路径避免权限问题在客户现场C:\Program Files\通常不可写。传统做法是改 CMakeLists.txt 中的install()路径但更优雅的是运行时指定D:\tools\cmake-3.17.1\bin\cmake.exe -DCMAKE_INSTALL_PREFIXD:/myapp/install -G Ninja ..\ D:\tools\cmake-3.17.1\bin\cmake.exe --build . --target install此时make install或cmake --build . --target install会将bin/、lib/、include/全部输出到D:/myapp/install无需任何管理员权限。这是交付给客户的最佳实践——所有产物集中在一个可移动目录删掉即卸载。5.4 技巧四验证构建产物的纯净性防隐式依赖免安装包的终极价值是“可验证的纯净构建”。我每次交付前必做三件事检查 PE 依赖用Dependencies.exe开源工具打开生成的myapp.exe确认只依赖KERNEL32.dll、USER32.dll、msvcp140.dll来自 CMake 自带不出现VCRUNTIME140.dll系统版检查符号表dumpbin /headers myapp.exe | findstr machine确认为x64运行时隔离测试将myapp.exe、msvcp140.dll、msvcr140.dll均从cmake-3.17.1-win64-x64\bin\复制放入空文件夹在全新 Win10 虚拟机中双击运行验证无任何缺失 DLL 报错。从那以后我每次为客户部署 C 工具链都强制走一遍这三步验证。不是 paranoid而是过去三次翻车全因msvcp140.dll版本不匹配——一次是客户机装了 VS2022 运行时14.33而我的免安装包带的是 14.28导致std::string构造异常。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

SQL Server+MyBatis插入返回主键的四大生产级方案

SQL Server+MyBatis插入返回主键的四大生产级方案

1. 项目概述:为什么SQL Server Mybatis组合下“插入后返回主键”不是默认能力,而是一个必须主动设计的工程细节?在某高校实验室开发一个教学管理系统时,我接手了一套用MyBatis连接SQL Server 2019的旧代码。第一周就卡在一个看似…

2026/10/15 14:22:29 阅读更多 →
MATLAB语音增强实战:谱减、维纳、卡尔曼三种算法对比与调试

MATLAB语音增强实战:谱减、维纳、卡尔曼三种算法对比与调试

简介:MATLAB语音增强方法包,围绕维纳滤波、谱减法与卡尔曼滤波三种主流降噪算法展开,适合信号处理方向学生、科研人员及语音相关开发者,用于解决带噪语音清晰度不足、信噪比低的问题,也可用于语音通信、语音识别前端预…

2026/10/15 14:21:24 阅读更多 →
TypeScript在前端工程中的实践与优化

TypeScript在前端工程中的实践与优化

1. 为什么前端项目需要TypeScript2012年微软推出TypeScript时,前端工程还停留在jQuery时代。十年后的今天,当我们的项目动辄数万行代码、需要数十人协作时,类型系统已从"锦上添花"变成了"雪中送炭"。去年参与某金融中台项…

2026/10/15 14:21:24 阅读更多 →

最新新闻

MATLAB常用信号处理函数清单:从FFT到滤波器实战指南

MATLAB常用信号处理函数清单:从FFT到滤波器实战指南

1. 项目概述:为什么要单独整理一份信号处理函数清单做信号处理这几年,我最大的感受就是:MATLAB的功能强大到让人眼花缭乱,但真正高频使用的函数翻来覆去就那么几十个。很多初学者最容易犯的毛病,是一上来就抱着几百页的…

2026/10/15 17:18:28 阅读更多 →
拓扑优化入门:99行与88行程序对比及OC与MMA算法解析

拓扑优化入门:99行与88行程序对比及OC与MMA算法解析

简介:这份资源面向拓扑优化初学者与结构优化方向的学生、研究人员,提供一套可直接运行的MATLAB入门程序,涵盖优化准则法(OC)与移动渐近线法(MMA)两种主流求解思路,帮助读者理解如何在…

2026/10/15 17:18:28 阅读更多 →
Agent Skills 标准实战:用 SKILL.md 让 AI Agent 真正学会干活

Agent Skills 标准实战:用 SKILL.md 让 AI Agent 真正学会干活

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 17:18:28 阅读更多 →
开题报告写到崩溃?这份“保姆级”通关攻略请收好

开题报告写到崩溃?这份“保姆级”通关攻略请收好

每到毕业季,无数本科生的第一道坎往往不是毕业论文答辩,而是开题报告。选题不知道从哪下手,研究思路理不清,格式改了又改还是被导师打回重写,不少同学一提到“开题报告”四个字就头皮发麻。其实,过来人都清…

2026/10/15 17:18:28 阅读更多 →
CANopen协议栈源码拆解:从对象字典到PDO映射的嵌入式实现

CANopen协议栈源码拆解:从对象字典到PDO映射的嵌入式实现

简介:CANopen完整源码是一套面向嵌入式控制开发者的开源协议栈实现,基于CAN总线构建,适合从事工业自动化、运动控制、汽车电子等领域的工程师与学习者研究和使用。资源包共77个文件,以C语言源文件与头文件为主体(28个.…

2026/10/15 17:18:28 阅读更多 →
STM32驱动MAX6675测温:SPI时序解析与避坑实战

STM32驱动MAX6675测温:SPI时序解析与避坑实战

简介:这份资源是面向嵌入式初学者与STM32开发者的MAX6675测温驱动测试例程,基于STM32F103与K型热电偶专用芯片MAX6675搭建,重点解决SPI通信配置、冷端补偿读取与温度数据解析等实际问题,适合用于温度采集类课程设计、实验验证或工…

2026/10/15 17:17:27 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →