优化编译脚本

This commit is contained in:
2025-06-26 17:41:33 +08:00
parent 262d5d3f90
commit e8d9f26c5c
5 changed files with 41 additions and 47 deletions

30
make.py
View File

@@ -75,12 +75,11 @@ gcc -MM main.c -o build/main.d
def tran_path(path:str):
p=path.replace('\\','/')
p=p.replace('/','_')
if(p[0]=='.'):
return p[1:]
else:
return p
path=os.path.normpath(os.path.join(BUILD_DIR,path))
base_path=os.path.dirname(path)
if not os.path.exists(base_path):
os.makedirs(base_path)
return path
# 判断是否需要重新生成
@@ -123,9 +122,8 @@ def read_depend_files(name:str):
def build_depend(src:list):
flags=f"{' '.join(CINC)} {' '.join(CDEF)} {' '.join(CFLAG)}"
for i in src:
name=tran_path(i).split('.')[0]
name=os.path.splitext(tran_path(i))[0]
dst='.'.join([name,'d'])
dst=os.path.join(BUILD_DIR,dst)
if(check_rebuild(dst,[i])):
cmd=f"{CC} -MM {i} -o {dst} {flags}"
print(f"更新 {dst}")
@@ -140,21 +138,19 @@ def build_depend(src:list):
def build_object(src:list):
flags=f"{' '.join(CINC)} {' '.join(CDEF)} {' '.join(CFLAG)}"
for i in src:
name_l=tran_path(i).split('.')
name=name_l[0]
file_type=name_l[-1]
name_t=os.path.splitext(tran_path(i))
name=name_t[0]
file_type=name_t[-1]
dst='.'.join([name,'o'])
dst=os.path.join(BUILD_DIR,dst)
cd='.'.join([name,'d'])
cmd = ''
if(file_type in ['c','.C']):
cd=os.path.join(BUILD_DIR,cd)
if(file_type in ['.c','.C']):
if(check_rebuild(dst,read_depend_files(cd))):
cmd=f"{CC} -c {i} -o {dst} {flags}"
else:
# print(f"{i} 没有更新依赖关系")
pass
elif(file_type in ['s','S','asm','ASM']):
elif(file_type in ['.s','.S','.asm','.ASM']):
if(check_rebuild(dst,[i])):
# cmd=f"{AS} -c {i} -o {dst} {flags}"
pass
@@ -173,8 +169,8 @@ def build_target(src:list):
flags=f"{' '.join(CINC)} {' '.join(CDEF)} {' '.join(CFLAG)}"
obj_list=[]
for i in src:
name=tran_path(i).split('.')[0]
obj_list.append(BUILD_DIR+'/'+'.'.join([name,'o']))
name=os.path.splitext(tran_path(i))[0]
obj_list.append('.'.join([name,'o']))
dst=os.path.join(BUILD_DIR,TARGET)
if(check_rebuild(dst,obj_list)):
cmd=f"{CC} {' '.join(obj_list)} -o {dst} {flags}"