#!/bin/bash # NAC区块链统一编译脚本 # 作者:NAC公链开发小组 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # 默认为debug模式 BUILD_MODE="debug" CARGO_FLAGS="" # 解析参数 while [[ $# -gt 0 ]]; do case $1 in --release|-r) BUILD_MODE="release" CARGO_FLAGS="--release" shift ;; *) echo "未知参数: $1" exit 1 ;; esac done echo "=========================================" echo " NAC区块链统一编译脚本" echo " 模式: ${BUILD_MODE}" echo "=========================================" echo "" SUCCESS=0 FAILED=0 # 编译模块函数 build_module() { local module=$1 local name=$2 if [ -d "$module" ]; then echo -e "${YELLOW}正在编译 ${name}...${NC}" cd "$module" if cargo build $CARGO_FLAGS 2>&1 | tee /tmp/build_${name}.log; then echo -e "${GREEN}✓ ${name} 编译成功${NC}" ((SUCCESS++)) else echo -e "${RED}✗ ${name} 编译失败${NC}" echo "错误日志: /tmp/build_${name}.log" ((FAILED++)) fi cd .. echo "" else echo -e "${YELLOW}跳过 ${name}(目录不存在)${NC}" echo "" fi } # 开始编译 START_TIME=$(date +%s) # 1. 编译nac-udm(核心模块) build_module "nac-udm" "NAC统一数据模型" # 2. 编译charter-compiler build_module "charter-compiler" "Charter编译器" # 3. 编译nvm_v2 build_module "nvm_v2" "NAC虚拟机v2" # 4. 编译其他模块(如果存在) build_module "nac-nvm" "NAC虚拟机" build_module "nac-cbpp" "CBPP共识协议" build_module "nac-gnacs" "GNACS资产分类" build_module "nac-acc" "ACC协议" build_module "nac-acc20c" "ACC-20C合规协议" build_module "nac-rpc" "NAC RPC接口" build_module "nac-storage" "NAC存储层" # 计算耗时 END_TIME=$(date +%s) DURATION=$((END_TIME - START_TIME)) # 输出统计 echo "=========================================" echo "编译完成" echo "=========================================" echo -e "成功: ${GREEN}${SUCCESS}${NC}" echo -e "失败: ${RED}${FAILED}${NC}" echo "耗时: ${DURATION}秒" echo "" if [ $FAILED -eq 0 ]; then echo -e "${GREEN}✓ 所有模块编译成功!${NC}" echo "" echo "编译产物位置:" if [ "$BUILD_MODE" == "release" ]; then echo " target/release/" else echo " target/debug/" fi exit 0 else echo -e "${RED}✗ 部分模块编译失败,请检查错误日志${NC}" exit 1 fi