48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
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)
|
|
|