import os from SCons.Script import * # 工具链配置(Ubuntu gcc环境) CROSS_TOOL = 'gcc' PREFIX = '' # 本地编译不需要交叉编译前缀 # 目标配置 TARGET_NAME = 'app' # 更改为通用应用名称 BUILD_DIR = 'build' # 统一构建输出目录 # 工具链路径(使用系统默认的gcc工具链) CC = PREFIX + 'gcc' CXX = PREFIX + 'g++' AS = PREFIX + 'gcc' AR = PREFIX + 'ar' LINK = PREFIX + 'gcc' SIZE = PREFIX + 'size' OBJDUMP = PREFIX + 'objdump' OBJCPY = PREFIX + 'objcopy' # 编译、链接选项(适用于Ubuntu gcc环境) DEVICE = '-std=c99 -g -O2 -fvisibility=hidden -fno-common' CFLAGS = DEVICE + ' -Wall -Wextra' # 添加更多警告选项 AFLAGS = '-c ' + DEVICE + ' -x assembler-with-cpp' LFLAGS = DEVICE + ' -Wl,--gc-sections,-cref,-Map=' + os.path.join(BUILD_DIR, TARGET_NAME + '.map') # 构建后处理命令(输出到 build 目录) ASM_FILE = os.path.join(BUILD_DIR, TARGET_NAME + '.asm') BIN_FILE = os.path.join(BUILD_DIR, TARGET_NAME + '.bin') DUMP_ACTION = f'{OBJDUMP} -D -S $SOURCE > {ASM_FILE}' POST_ACTION = f'{OBJCPY} -O binary $SOURCE {BIN_FILE}\n' POST_ACTION += f'{SIZE} $SOURCE\n' POST_ACTION += DUMP_ACTION