编译Rust crate expat-sys v2.1.6时CMake弃用警告致构建失败
解决expat-sys v2.1.6构建失败问题
快速解决方案(推荐)
安装Fedora系统自带的expat开发库,让expat-sys直接使用系统库而非自行编译:
sudo dnf install expat-devel
安装完成后重新执行cargo build即可。
原理说明
expat-sys v2.1.6是一个较旧的crate,其内置的CMakeLists.txt使用了低于2.8.12的最低版本要求,而你当前使用的CMake 3.25.1已经开始严格限制此类过时配置,导致自定义构建流程报错退出。安装系统级的expat开发库后,cargo会自动检测并优先链接系统库,跳过crate自带的CMake构建步骤,从而规避版本兼容问题。
备选方案(源码编译修复)
如果必须使用expat-sys的源码编译版本,可以通过cargo patch工具修改其CMake配置:
- 安装cargo-patch:
cargo install cargo-patch
- 在项目根目录创建
patch/expat-sys-fix-cmake-version.patch文件,内容如下:
diff --git a/CMakeLists.txt b/CMakeLists.txt index abc123..def456 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ # See LICENSE for details. # -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 2.8.12) project(expat C)
- 在
Cargo.toml中添加patch配置:
[patch.crates-io] expat-sys = { path = "./patches/expat-sys" }
- 执行
cargo patch apply后重新构建。
内容的提问来源于stack exchange,提问作者Bugbert
相关产品推荐
相关产品推荐

