import os from SCons.Script import * # 导入环境 Import('env') # 项目根目录 CWD = os.getcwd() # 收集源码(.c 和 .S 文件) sources = Glob(os.path.join(CWD, 'src/*.c')) + Glob(os.path.join(CWD, 'src/*.S')) # 编译选项 cpppath = [ CWD, os.path.join(CWD, 'inc'), # 仅使用项目内的头文件目录 ] # 确保 build 目录存在 BUILD_DIR = 'build' if not os.path.exists(BUILD_DIR): os.makedirs(BUILD_DIR) # 逐个编译源码生成目标文件(输出到 build 目录) objs = [] for src in sources: src_path = str(src) # 转换为字符串路径 obj_name = os.path.basename(src_path).replace('.c', '.o').replace('.S', '.o') obj_path = os.path.join(CWD, BUILD_DIR, obj_name) obj = env.Object( target=obj_path, source=src_path, CPPPATH=cpppath, ) objs.append(obj) # 返回目标文件列表,给 SConstruct 链接用 Return('objs')