import os from SCons.Script import * # 确保 build 目录存在 BUILD_DIR = 'build' if not os.path.exists(BUILD_DIR): os.makedirs(BUILD_DIR) # 导入配置(修改为导入algo.py) from algo import * # 初始化构建环境 env = Environment( tools=['default'], CC=CC, CXX=CXX, AS=AS, AR=AR, LINK=LINK, CCFLAGS=CFLAGS, CXXFLAGS=CFLAGS, ASFLAGS=AFLAGS, LINKFLAGS=LFLAGS, CPPPATH=['inc'], # 仅使用项目内的头文件目录 ) # 递归构建源码(SConscript 负责收集编译文件) src_objs = env.SConscript('SConscript', exports='env') # 链接生成 elf 文件(输出到 build 目录) elf_target = os.path.join(BUILD_DIR, TARGET_NAME) elf_file = env.Program(elf_target, src_objs) # 后处理:生成 bin、asm 等文件 post_commands = env.Command( os.path.join(BUILD_DIR, 'post_actions'), # 虚拟目标,确保命令执行 elf_file, POST_ACTION ) # 关联默认构建目标(执行 scons 时默认编译+后处理) Default(elf_file) Default(post_commands) # 清理规则(删除 build 目录及内容) Clean(elf_file, BUILD_DIR)