use std::process::Command; use prost_build::Config; fn main() { // 获取构建的profile let profile = std::env::var("PROFILE").unwrap(); println!("profile: {}", profile); // 如果是release模式,不重新生成 if profile == "release" { return; } // println!("cargo:rerun-if-changed=build.rs"); #[cfg(target_os = "windows")] { std::env::set_var( "PROTOC", "../../rtsa-proto-msg/protoc/protoc-27.4-win64/bin/protoc.exe", ); } Config::new() .out_dir("src/pb") .type_attribute( "common.Role", "#[derive(sqlx::Type, async_graphql::Enum, serde::Serialize, serde::Deserialize)]", ) .type_attribute( "common.DataType", "#[derive(sqlx::Type, async_graphql::Enum, serde::Serialize, serde::Deserialize)]", ) .type_attribute( "common.LineType", "#[derive(async_graphql::Enum, serde::Serialize, serde::Deserialize)]", ) .type_attribute( "common.IscsStyle", "#[derive(async_graphql::Enum, serde::Serialize, serde::Deserialize)]", ) .type_attribute( "common.FeatureType", "#[derive(sqlx::Type, async_graphql::Enum, serde::Serialize, serde::Deserialize)]", ) .compile_protos( &[ "../../rtsa-proto-msg/src/common.proto", "../../rtsa-proto-msg/src/iscs_graphic_data.proto", "../../rtsa-proto-msg/src/simulation.proto", ], &["../../rtsa-proto-msg/src/"], ) .unwrap(); // Run cargo fmt to format the generated code Command::new("cargo") .args(["fmt"]) .status() .expect("Failed to run cargo fmt on rtsa-dto"); }