You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下路径超260字符时Rust项目的CMake依赖构建失败

长路径下CMake构建GLFW(Rust glfw crate)失败的解决方案

问题说明

我在Rust中使用glfw crate开发OpenGL程序,该crate默认会通过构建脚本调用CMake编译GLFW依赖。短路径或中等长度带空格的路径下项目都能正常构建运行,但将项目移到长路径~/Dropbox/Coursework/5th Year - 2022-2023/Fall/COIS-4480H Computer Graphics/FinalProject后,执行rm -rf target && cargo run时构建失败,核心报错为FileTracker的FTK1011错误:无法创建指定路径的文件跟踪日志文件。尝试设置CMAKE_USE_RELATIVE_PATHS=TRUE未解决问题,同时我已向cmake-rs仓库提交bug报告,现寻求CMake层面的长路径解决方案。

可行解决办法

1. 指定短路径构建目录

修改项目的build.rs,给cmake-rs指定一个短路径的输出目录,让CMake在短路径下生成构建文件:

use cmake::Config;

fn main() {
    let mut config = Config::new("glfw");
    config.out_dir("/tmp/glfw-build"); // 替换为任意短路径
    let dst = config.build();
    println!("cargo:rustc-link-search=native={}/lib", dst.display());
    println!("cargo:rustc-link-lib=glfw");
}

2. 缩短CMake生成文件的路径

通过CMake参数缩短临时文件目录名称,减少整体路径长度:
在build.rs中添加定义:

config.define("CMAKE_FILES_DIRECTORY", "cf")
       .define("CMAKE_USE_RELATIVE_PATHS", "ON");

3. 创建项目目录的短路径符号链接

直接在短路径下创建项目的符号链接,绕过原长路径限制:

ln -s ~/Dropbox/Coursework/5th\ Year\ -\ 2022-2023/Fall/COIS-4480H\ Computer\ Graphics/FinalProject ~/glfw-proj
cd ~/glfw-proj
rm -rf target && cargo run

4. 手动指定FileTracker日志文件路径

CMake的FileTracker日志路径过长导致创建失败,手动指定一个短路径的日志文件:
在build.rs中添加:

config.define("CMAKE_FILETRACKER_LOG_FILE", "/tmp/ft.log");

内容的提问来源于stack exchange,提问作者matthew-e-brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:55:21