Windows下Makefile绝对路径避坑指南:三种写法与排查链路
写 Windows 下 Makefile 的绝对路径最磨人的不是你有多少年 C/C/嵌入式经验而是你写下去的那一条C:\project\src\main.c到底会被谁“消化”。我在两个项目里都遇到过同一种匪夷所思的错文件明明摆在磁盘上编译却报No such file or directory变量打印出来路径很正常可一旦进了命令反斜杠就莫名其妙多了一倍。折腾到最后问题几乎没有一次出在“路径不存在”上全出在“路径格式和你所在工具链的底层习惯不匹配”上。这篇文章我会把 Windows 下 Makefile 绝对路径这件事拆开讲清楚三种可落地写法怎么选、怎么让绝对路径自动跟着项目走、一条完整的排查链路长什么样以及我自己的固定习惯。无论你是刚把 Linux 下的构建脚本搬到 Windows还是常年用 VS 但偶尔要接手一个 Makefile 项目这些东西都能直接让你少熬几个通宵。1. 先从根上搞明白Windows 路径与 make 语法的三个冲突点很多人在 Windows 下写 Makefile 出问题第一反应是“我路径写错了”然后反复试各种斜杠组合。真正的问题其实是 make 的解释规则和 Windows 命令解释器、磁盘盘符、工具链出身缠在一起形成了三层叠加的认知成本。不把这三层关系理清你只能靠试错而且每次试错都只能摸到一层。1.1 反斜杠在 make 里不只是路径分隔符在普通的文本编辑器里\是路径分隔符在 GNU make 的语法里\是续行符。Makefile 里你一定见过下面这种写法OBJS : \ foo.o \ bar.o \ main.o这里每一行末尾的反斜杠把三条赋值拼成了一句。这个行为在中括号续行的时候是绝对必要的但它和 Windows 的反斜杠路径天然冲突。假如你在规则里写C:\work\demo\main.o: C:\work\demo\main.c cc -c $ -o $第一行的行尾看起来是个普通\main.o但实际上\后面直接跟着换行符make 会把它当成续行然后这一条规则的解析结果就完全不是你想的那样。这是 Windows 下写 Makefile 最容易出现、也最隐蔽的问题你以为在写 Windows 路径make 却认为你在拼接语句。就算不放在规则的“目标:依赖”区域而是放在变量赋值里\也不是完全安全。某些情况下C:\path会被原样保留但一旦路径后面跟着#注释或者被其他函数展开结果就会变得不可预测。最稳妥的做法不是去研究 make 到底在哪个版本、哪个上下文里放过反斜杠而是从一开始就尽量避免在 Makefile 内部使用单反斜杠路径。1.2 盘符后面的冒号很容易被当成规则分隔符Makefile 规则的基本格式是目标: 依赖冒号是语法里的关键分隔符。Windows 绝对路径天然带一个盘符冒号比如C:/work/demo。理论上 GNU make 能分辨目标名里的冒号和语法冒号但这里有一个容易忽略的细节当路径出现在“依赖”一侧或者出现在函数参数里时冒号的语义就完全取决于 make 的解析阶段而不是你看上去的“路径”。举个实际例子VPATH变量用来指定 make 去哪些目录找源文件VPATH : C:\shared\src你觉得自己写的是“C 盘 shared 目录下的 src”但某些版本、某些 shell 环境下C:会被理解成驱动器切换甚至被当作某种奇特的标签开头。结果就是源文件明明在C:\shared\src下面make 就是找不到只会告诉你prerequisite不存在。再一个容易被忽略的是环境变量里的分号。Windows 下 PATH 环境变量用分号分隔各个目录GNU make 里很多路径列表也靠空格或分号区分路径项。如果某个绝对路径变量是从系统环境变量继承过来的那么分号和盘符冒号混在一起展开后的结果很难用肉眼看出来哪里断了。1.3 工具链出身决定路径口径同样一个C:/work/demo/main.c在原生 Windows 命令提示符里可能完全正常到了 MSYS2 的 shell 里会被自动翻译成/c/work/demo/main.c反过来如果你在 cmd 环境下把一个/c/work/demo/main.c直接传给某个 Windows 本地工具那个工具大概率会一脸懵。这种“路径口径”差异不是语文问题而是工具链的运行时空判断。我打个比方工地上所有人都说“去东门”但有人指的是整个园区东门有人指的是自己工区东门更有人指的路牌是一个意思。Makefile 要把原料路径、工具路径、输出路径都正确交给各个“角色”就必须先搞清楚你手底下这些角色到底属于哪个门派。所以下面的第二、三部分就是在解决“怎么写出一个各方都认的绝对路径”以及“怎么让路径在门派之间安全转换”。2. 三种绝对路径写法吃透按工具链出身选型Windows 下 Makefile 里写绝对路径真正能长期站住脚的只有三种格式。我先把结论放在前面日常变量交换用正斜杠加盘符最省事只有明确要输出 Windows 原始样式时才用双反斜杠只有确定整个构建都由 MSYS/MinGW 体系驱动时才优先考虑/c/风格。下面逐个说清楚。2.1 写法 A正斜杠盘符格式 C:/work/demo这是我最推荐作为默认的写法无论是 GNU make 本身、还是大多数面向 Windows 的原生编译器比如各种 mingw 系列工具都能正常解析正斜杠。PROJECT_ROOT : C:/work/demo SRC_DIR : $(PROJECT_ROOT)/src BUILD_DIR : $(PROJECT_ROOT)/build all: echo source dir $(SRC_DIR)这段代码你直接放进 Makefile 里跑基本不会见到反斜杠相关的意外。make 看到变量值里的/不会做任何转义处理命令执行时原样传给 shellcmd 也认C:/work/demo这种写法。这里有一个细节我想强调cd C:/work/demo在 cmd 里其实可以执行但如果你需要跨盘符切换目录cmd 的cd有时候不会自动切盘标准做法是cd /d C:\work\demo或pushd。这属于命令解释器层面的问题和 Makefile 变量里怎么写路径无关但你要知道路径写对了不代表命令语法就完全匹配了。2.2 写法 B双反斜杠转义格式 C:\work\demo当整个 Makefile 工作流需要把路径当作 Windows 原生样式传给某些对反斜杠有执念的批处理工具时你才需要用双反斜杠。# 某些工具返回 Windows 原始路径时或给子 make 传参时 NATIVE_BUILD_DIR : C:\\work\\demo\\build为什么在 Makefile 里要写两个反斜杠因为 make 的字符串解析里\\会被合并成一个字面意义上的反斜杠字符。如果你只写一个\遇到行尾就变成了续行符遇到某些字符会被当作转义处理路径就失真了。但要提醒一句双反斜杠只是解决了“make 这一层保持路径不变”的问题。当这个字符串进入 shell 或编译器时它们也会对反斜杠再做一轮解释所以很有可能出现“变量里看起来是 C:\demo命令执行时却变成两个反斜杠”的怪象。这类问题我后面第五节会专门讲。两个人以上协同维护同一份 Makefile 时我特别不建议默认用双反斜杠因为写错一个反斜杠的肉眼风险实在太高。我通常只在 Makefile 里用一个专门的变量名去承载这种“原生 Windows 路径”而且写完一定要打一个$(info)出来确认。2.3 写法 CMSYS 风格 /c/work/demo 及互相转换如果你用的是 MSYS2 或 MinGW 环境工具链内部实际路径是以/c/形式存在的。GNU make 在那个环境底下运行很多文件函数返回的路径也是这种 POSIX 风格# 在 MSYS2 环境中 MY_PROJECT_ROOT : /c/work/demo这套路径能让 MSYS 体系里的 shell 命令、gcc、gdb 识别但当你把它传给一个原生 Windows 程序时就需要在边界处理。MSYS2 的运行时通常会自动转换参数里的 POSIX 路径为 Windows 路径但不是所有场景都会自动转也有转错的情况。如果你需要手动从/c/work/demo转回 Windows 风格最可靠的工具是cygpathcygpath -w /c/work/demo # 输出 C:\work\demo cygpath -m /c/work/demo # 输出 C:/work/demo在 Makefile 里可以这样用NATIVE_ROOT : $(shell cygpath -w /c/work/demo)但这种方式有一个前提你得在能运行 cygpath 的环境里。如果用户拿这个 Makefile 到纯 cmd 环境下跑cygpath不存在那个$(shell ...)就会返回空值随后所有路径全部断裂。所以我的结论是如果你要写一个有可能被不同环境作者使用的 Makefile不要在内部依赖 cygpath 这种环境特定工具除非你外部保证只有 MSYS2 环境会跑它。2.4 三种写法的选型对照写法示例适用场景在 make 中需转义主要风险正斜杠盘符C:/work/demo通用默认绝大多数工具否个别老式批处理不认双反斜杠C:\\work\\demo需要保持 Windows 原生字符串是写两个继续传到 shell 后可能双重转义MSYS POSIX/c/work/demoMSYS2/MinGW 内部否脱离 MSYS 环境后失效你现在就能做一个决定如果这个 Makefile 只在你自己机器上用随便选顺手的如果要提交到仓库给多人用默认格式就用写法 A然后与所有人约定不能在变量里混写单反斜杠。这是成本最低、可预期性最强的方案。3. 能推导就别写死让绝对路径跟着 Makefile 走“绝对路径设置”并不一定等于硬编码一条路径。实际上一个优秀项目里真正手工填写的绝对路径应该只有一个“根”其他所有子目录都由这个根推导出来。这样一来哪怕整个项目从D:/workspace/搬到临时目录或者被别人拉到另外一台机器也只需要改一个变量。3.1 用 MAKEFILE_LIST 锚定项目根目录GNU make 提供一个变量MAKEFILE_LIST记录当前已经解析过的所有 Makefile 路径。用它找到“当前这个 Makefile 的绝对路径”再向上定位项目根目录是 Windows 下最稳的锚点做法MKFILE_PATH : $(abspath $(lastword $(MAKEFILE_LIST))) PROJECT_ROOT : $(abspath $(dir $(MKFILE_PATH))/..) SRC_DIR : $(PROJECT_ROOT)/src BUILD_DIR : $(PROJECT_ROOT)/build这里$(lastword $(MAKEFILE_LIST))取到的是“最近一个被解析的 Makefile”在单 Makefile 项目里就是当前文件。加上$(abspath)后无论 make 是在项目根目录调用还是用make -f build/Makefile在子目录里调用最终拿到的都是不包含.和..的绝对路径。为什么不用$(CURDIR)$(CURDIR)是 make 当前的工作目录它会随make -C或cd而改变。如果一个构建脚本切换到子目录执行再引用$(CURDIR)就会指向子目录而不是 Makefile 所在的目录。用MAKEFILE_LIST作为锚点才是真正意义上“跟随 Makefile 所在位置”。3.2 abspath 和 realpath 的边界差别很多教程会让新手直接在项目里用$(realpath ...)但realpath有一个硬约束它要求路径指向的东西真实存在。如果目录还没有创建$(realpath)会返回空值而$(abspath)只管做路径规范化不检查存在性适合用来定义构建输出目录这类“尚未创建”的路径。# 输出目录可能还不存在用 abspath 做规范化 BUILD_DIR : $(abspath $(PROJECT_ROOT)/build) # 源码目录必须存在用 realpath 做一次校验 SRC_DIR : $(realpath $(PROJECT_ROOT)/src)需要注意Windows 下abspath的输出风格和所在环境有关。原生 GNU make for Windows 一般会把结果整理成C:/...这样的形制在 MSYS2 内部则可能输出/c/...这种风格。建议在项目里不要假设它长什么样先跑一次$(info)亲眼确认。3.3 跨盘符场景源文件和输出目录不在同一个盘Windows 的“当前工作目录”概念是与盘符绑定的cmd 下你在C:盘执行某个命令时如果需要访问D:盘文件最安全的方式就是把路径写成带盘符的绝对路径。Makefile 里如果有跨盘源文件规则推导也要特别小心。比如项目主体在C:/project但某个外部库源码在D:/shared/libsCOMMON_SRC : D:/shared/libs/string_util.c APP_SRC : C:/project/src/main.c app.exe: $(APP_SRC) $(COMMON_SRC) cc $(APP_SRC) $(COMMON_SRC) -o $直接把完整的绝对路径写进源文件列表反而最直观因为 make 看到不同盘路径时不会也不该去做“相对当前盘”的假设。真正容易出错的是你想用VPATH去自动搜索D:/shared/libs目录里的.c文件。Windows 下交叉盘的VPATH行为不像单盘那么简单容易发生依赖找不到或者被错误路径覆盖。我的建议是跨盘场景尽量显式写路径不要把希望寄托在隐式规则和 VPATH 搜索上。4. 路径问题的完整排查链路从 make 打印到命令实际收到这节我会用一种“排查思路”而不是“答案速查表”的方式来写。因为路径问题在 Windows 下千奇百怪很多坑只不过换了一副面孔。掌握链路比记住某一个具体报错的修复方法重要得多。4.1 第一步确认 make 到底把路径交给了谁拿到一个“路径有问题”的 Makefile先不要急着改斜杠。先在文件顶部把所有关键路径变量打印出来$(info path debug ) $(info PROJECT_ROOT $(PROJECT_ROOT)) $(info SRC_DIR $(SRC_DIR)) $(info BUILD_DIR $(BUILD_DIR)) $(info )再跑一遍make -n只看 make 实际要执行的命令而不是 Makefile 源码。因为make -n打印的是“加工处理之后的结果”能看出变量展开、续行、转义后的最终形态。很多时候看到这条命令你就已经知道问题在哪一层了。如果make -n里的路径是正确的但实际跑起来还是报错那就是 shell 或外部工具层的问题。比如 Windows 原生命令和 MSYS 命令对同一段路径的解释差异。这时候再把命令复制出来手动开一个 cmd/PowerShell 执行一遍能直接确认是路径问题还是命令解释问题。4.2 “文件明明在却报 No such file or directory”的三种原因这是 Windows 下 Makefile 路径问题里最经典的现象。常见原因有三个排查顺序也有讲究原因一反斜杠被 make 当成转义或续行处理。比如你在变量里写的是C:\work\demomake 可能在某个函数展开时把反斜杠吞掉、或把行尾的\d和下一行连起来。最终传给编译器的路径变成C:workdemo文件当然找不到。解决办法改用正斜杠盘符。原因二路径格式在这个工具里不被认可。比如你在 cmd 环境里把/c/work/demo/main.c传给了某个原生 Windows 编译器那个编译器不认/c/前缀。解决办法确认当前环境是什么工具链在最外层统一成它认识的口径。原因三路径里有空格但又没加引号。这个单独拿出来讲BUILD_DIR : C:/work/my project/build如果你在规则里直接cd $(BUILD_DIR)shell 会把它当成cd C:/work/my和多余的参数结果自然失败。正确做法是给整个路径加引号cd $(BUILD_DIR) ...但加引号也有讲究。在 Makefile 的规则里引号会被原样送到 shell如果你是给 gcc 传 include 路径推荐把引号包在路径外层-I$(INCLUDE_DIR)。不过如果路径又出现在目标、依赖等 make 语法位置上引号并不能解决空格问题因为 make 的依赖解析里空格本身就是分隔符它会把C:/work/my和project/build当成两个独立条目。这种场景要用转义空格BUILD_DIR : C:/work/my\ project/buildmake看到转义空格会保留它外部工具再把它当一个整体。这条路走下来你就明白为什么我前面建议新项目尽量别把根目录放在带空格的路径里。4.3 变量打印正常命令执行时路径却多出反斜杠我遇到过好多次这种怪事$(info)打印的变量是C:\work\demo看起来很对但make -n出来的命令里变成了C:\\work\\demo所以编译器实际收到的路径多了反斜杠。这其实是转义层层叠加的结果。Makefile 里为了不让单个反斜杠被 make 吞掉你可能会写\\make 解析后变量里存的是一个真正的反斜杠打印出来也是正常的单个反斜杠但当你把这个变量放进命令时shell尤其是某些 Unix 风格 shell会对参数里的反斜杠再做一次转义于是\变成了\\。这种问题的根源就是同一段路径经过了“make 层”和“shell 层”两层甚至三层的字符解释。你无法通过肉眼预览所有层的最终效果所以尽量不要让路径串进非必要的转义流程。正斜杠格式在这一点上是最省心的——它在绝大多数 Windows 工具里都不需要转义。4.4 递归 make 时绝对路径的二次拼接问题项目一大你很可能要用递归 makemake -C subdir。Windows 下递归 make 的路径问题很隐蔽因为子 make 拿到的工作目录变了父 make 里生成好的绝对路径如果传下去时没规范好会在子构建中发生二次拼接。常见写法错误# 父 Makefile sub: $(MAKE) -C sub BUILD_DIR../build在子 make 里../build是相对于sub目录的可能算出来是build但如果你在子 make 又加上$(CURDIR)或项目根变量路径就会变成C:/project/sub/../build之类的结果再展开到实际命令里时正常化规则不同有的工具会帮你消掉..有的不会于是在日志和实际文件访问上会出现差异。更稳妥的做法是在父 Makefile 里就把传给子 make 的路径变成绝对路径sub: $(MAKE) -C sub BUILD_DIR$(abspath $(BUILD_DIR))这样子 make 拿到的就是一个明确的、与工作目录无关的绝对路径后面的一切推算都有了一个不会漂移的锚点。5. 这几条路径习惯让我在 Windows 下少踩一半坑前面几节讲的是原理、写法和排查这一节是收拢性建议。它们不一定写在任何官方文档里但都是我在项目推进过程中反复验证过的行为约束。5.1 内部只认一种路径格式边界才转换现在我的项目里有一个铁规矩所有 Makefile 内部变量、函数传参、规则依赖一律使用正斜杠盘符格式C:/xxx。只有在最后调用某个明确要求反斜杠的工具时才在那一行临时转换。为什么这么定因为内部变量在构建过程里会被各种函数、规则展开几十次只要有一个地方混进了反斜杠排查就要从头过滤。正斜杠格式能让所有中间步骤变得可预测最终到命令边界需要什么再转。手工转换最常用的写法是用substNATIVE_PATH : $(subst /,\,$(UNIX_STYLE_PATH))但这条并不好在所有 shell 下通用因为 make 对替换文本里的反斜杠解释依然有版本差异。安全起见我是建议在你自己的环境里先测一下再大规模用。如果项目一定运行在 MSYS2 环境直接cygpath -w最干净否则你就要针对“纯 cmd GNU make”场景做一次验证。5.2 路径变量集中放文件头部带注释和可改示例松散地写绝对路径会让后来者根本不知道在哪里改。我现在会在 Makefile 开头放一个“路径配置区”明确注释哪些是需要用户改的、哪些是自动推导的######################################### # 用户配置区 # 下面的 PROJECT_ROOT 通常只需要改这一处 ######################################### PROJECT_ROOT : C:/work/demo PROJECT_NAME : demo ######################################### # 推导区除非你懂 make否则不要改 ######################################### SRC_DIR : $(PROJECT_ROOT)/src BUILD_DIR : $(PROJECT_ROOT)/build/$(PROJECT_NAME) DIST_DIR : $(PROJECT_ROOT)/dist很多人拿到一个 Makefile 第一眼就是找“该改哪里”。你把唯一入口放在最显眼的位置配合一行注释和示例能让这个文件的生命周期长很多。5.3 启动时做路径断言校验绝对路径最怕写错而写错的后果往往在编译中段才爆发。我现在会在 Makefile 最前面加几个“断言式检查”让错误尽早暴露ifeq ($(wildcard $(PROJECT_ROOT)/src),) $(error PROJECT_ROOT/src 不存在请检查路径配置: $(PROJECT_ROOT)) endif$(wildcard ...)检查目录是否存在不存在就立刻$(error)终止构建。这种“启动即失败”的做法在 CI 环境里特别好用比报一个无关紧要的编译错误直接告诉你“路径配错了”要友好一百倍。类似地我还会对构建输出目录做自动创建$(shell mkdir -p $(BUILD_DIR))不过mkdir -p在纯 cmd 下不一定可用所以如果你面向的是纯 Windows 环境可以换$(shell if not exist $(BUILD_DIR) mkdir $(BUILD_DIR))。具体选哪个取决于环境先测为敬。5.4 Windows 特有细节备忘大小写、尾部斜杠、驱动器切换这几个小事看着不起眼但踩一次坑的成本真的不小我顺手记下来大小写敏感度不一致。Windows 文件系统大小写不敏感但 MSYS2 环境里某些工具却可能是敏感的。比如C:/Work/Demo和C:/work/demo指同一个目录但某些判断路径是否相等的脚本会认为两者不同。建议项目内部统一小写路径避免“看起来能跑但偶发不识别”的问题。尾部斜杠要克制。$(dir $(MKFILE_PATH))返回的目录通常带一个尾部斜杠如果你直接拼接子路径很容易出现C:/work//src这种双斜杠。某些工具能容忍某些不能。我的习惯是统一在拼接前用$(patsubst %/,%,$(dir ...))剥掉尾部斜杠或用abspath做一次规范化。cmd 跨盘 cd 要用 /d。如果你在某个规则里确实需要cd且路径带盘符建议写成cd /d C:\work\demo ...因为 cmd 默认不跨盘切换没有/d的话cd 不会真正改变当前驱动器后续相对路径操作就会落到错误位置。最后一件事也是我个人经验里最有省时效果的一条如果这个项目从立项就确定只在 Windows 上跑那就不要试图让 Makefile 和 Linux 保持完全一致宁可针对 Windows 做一次路径规则整理也不要一边跑一边补洞。把根目录固定成无空格路径、内部统一正斜杠、允许启动自检这三件事做在前面Windows 下的 Makefile 绝对路径问题基本能消停大半。

相关新闻

偶遇秋雨:听西湖残荷雨声,漫谈软件工程中的“优雅降级”与留白艺术

偶遇秋雨:听西湖残荷雨声,漫谈软件工程中的“优雅降级”与留白艺术

午后行至西湖断桥畔,忽遇一阵突如其来的秋雨。北山街旁的百年梧桐在细雨中泛起淡淡的微黄,游人匆匆奔向亭廊避雨,而我却撑着一把青竹油纸伞,在曲院风荷的临水栈道前停下了脚步。 放眼望去,盛夏时节“接天莲叶无穷碧&am…

2026/10/11 4:47:22 阅读更多 →
WorkBuddy_WorkBuddy概述17_深度研究与信息检索

WorkBuddy_WorkBuddy概述17_深度研究与信息检索

深度研究与信息检索 摘要 在信息爆炸的时代,如何从海量数据中高效获取、筛选、整合有价值的信息,已经成为技术人员、产品经理、投资分析师乃至企业决策者的核心能力之一。本文将围绕"深度研究与信息检索"这一主题,系统讲解如何利用…

2026/10/11 4:47:22 阅读更多 →
教务管理系统JavaWeb项目实战:从数据库设计到Tomcat部署完整指南

教务管理系统JavaWeb项目实战:从数据库设计到Tomcat部署完整指南

简介:一套面向JavaWeb初学者的教务管理系统项目,基于J2EE技术体系,涵盖登录、找回密码、修改密码、注销等基础流程,并按学生、教师、教务员、系统管理员四类角色划分功能。学生端支持成绩查询、选修与考级报名、学籍信息维护及考级…

2026/10/11 4:47:22 阅读更多 →

最新新闻

Cursor 高级指南(七):CLI 安装、非交互、Worktree 与 ACP 实战配置

Cursor 高级指南(七):CLI 安装、非交互、Worktree 与 ACP 实战配置

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

2026/10/11 7:05:37 阅读更多 →
Unity 笔记二:数字孪生智慧城市中 LookAt 与 Cursor 的协同配置到 TaoToken

Unity 笔记二:数字孪生智慧城市中 LookAt 与 Cursor 的协同配置到 TaoToken

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

2026/10/11 7:05:37 阅读更多 →
Zion 接入 Gemini 3.5 flash 后,AI Agent Builder 的 BYOM 配置怎么改到 TaoToken

Zion 接入 Gemini 3.5 flash 后,AI Agent Builder 的 BYOM 配置怎么改到 TaoToken

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

2026/10/11 7:05:37 阅读更多 →
2026告别漫长等待:百度网盘冷门资源类似pandownload加速法

2026告别漫长等待:百度网盘冷门资源类似pandownload加速法

很多人在日常保存或者获取资料的时候,经常会遇到文件传输进度停滞不前的情况。面对几十兆甚至几个小容量的文件,进度条却像蜗牛爬行一样缓慢,确实很容易让人感到焦躁和无奈。 其实在很多时候,下载速度提不上来不一定是因为外界的…

2026/10/11 7:05:36 阅读更多 →
OWASP 五大 AI 安全框架:从对话、Agent、技能到协议的全链路防护体系

OWASP 五大 AI 安全框架:从对话、Agent、技能到协议的全链路防护体系

随着生成式AI、自主智能体(Agent)、插件技能生态的大规模落地,AI安全风险早已不再局限于“模型幻觉、提示注入”等基础问题。从模型对话输出、智能体自主决策,到第三方技能插件执行、内外系统协议交互,每一层链路都存在…

2026/10/11 7:05:36 阅读更多 →
安卓分屏自动左滑脚本:Auto.js+ADB实现3秒滑动挂机

安卓分屏自动左滑脚本:Auto.js+ADB实现3秒滑动挂机

先说个真实场景:我手机上装了某短视频极速版,每天要做签到和刷视频任务,手得一遍遍地左滑,滑到拇指发酸。后来我寻思,这滑动动作完全可以用脚本代替。于是就有了标题里这个功能——“循环3秒左滑-支持屏幕上下分屏”。…

2026/10/11 7:04:36 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →