From d67a3ab7f8e1d0fccbc8d998b39ec8f71e06f8ee Mon Sep 17 00:00:00 2001 From: mofeng-git Date: Sat, 5 Sep 2026 14:10:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(build):=20=E5=9C=A8=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E6=97=B6=E8=A7=A3=E6=9E=90=E7=BC=96=E8=A7=A3=E7=A0=81=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E6=BA=90=E7=A0=81=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit hwcodec 与 libyuv 构建脚本在运行时读取 CARGO_MANIFEST_DIR,避免复用或迁移构建产物后继续引用旧源码目录。 --- libs/hwcodec/build.rs | 13 +++++++------ res/vcpkg/libyuv/build.rs | 3 ++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/libs/hwcodec/build.rs b/libs/hwcodec/build.rs index 53dcc822..26aad7f3 100644 --- a/libs/hwcodec/build.rs +++ b/libs/hwcodec/build.rs @@ -5,7 +5,8 @@ use std::{ }; fn main() { - let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + // Read the current source path when running, since build artifacts may move. + let manifest_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap()); let cpp_dir = manifest_dir.join("cpp"); println!("cargo:rerun-if-changed=src"); println!("cargo:rerun-if-changed={}", cpp_dir.display()); @@ -17,7 +18,7 @@ fn main() { } fn build_common(builder: &mut Build) { - let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + let manifest_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap()); let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap(); let common_dir = manifest_dir.join("cpp").join("common"); @@ -367,7 +368,7 @@ mod ffmpeg { } fn ffmpeg_ffi() { - let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + let manifest_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap()); let ffmpeg_ram_dir = manifest_dir.join("cpp").join("common"); let ffi_header_path = ffmpeg_ram_dir.join("ffmpeg_ffi.h"); println!("cargo:rerun-if-changed={}", ffi_header_path.display()); @@ -381,7 +382,7 @@ mod ffmpeg { } fn build_ffmpeg_ram(builder: &mut Build) { - let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + let manifest_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap()); let ffmpeg_ram_dir = manifest_dir.join("cpp").join("ffmpeg_ram"); let ffi_header = ffmpeg_ram_dir .join("ffmpeg_ram_ffi.h") @@ -420,7 +421,7 @@ mod ffmpeg { return; } - let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + let manifest_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap()); let capture_header = manifest_dir .join("cpp") .join("ffmpeg_capture_ffi.h") @@ -443,7 +444,7 @@ mod ffmpeg { } fn build_ffmpeg_hw(builder: &mut Build) { - let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + let manifest_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap()); let ffmpeg_hw_dir = manifest_dir.join("cpp").join("ffmpeg_hw"); let ffi_header = ffmpeg_hw_dir .join("ffmpeg_hw_ffi.h") diff --git a/res/vcpkg/libyuv/build.rs b/res/vcpkg/libyuv/build.rs index 33205e2c..466cb069 100644 --- a/res/vcpkg/libyuv/build.rs +++ b/res/vcpkg/libyuv/build.rs @@ -5,7 +5,8 @@ use std::{ }; fn main() { - let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + // Read the current source path when running, since build artifacts may move. + let manifest_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap()); let cpp_dir = manifest_dir.join("cpp"); println!("cargo:rerun-if-changed=cpp/yuv_ffi.h");