1414
1515# ANSI 颜色代码
1616class Color :
17- RESET = ' \033 [0m'
18- BOLD = ' \033 [1m'
19- GREEN = ' \033 [92m'
20- YELLOW = ' \033 [93m'
21- RED = ' \033 [91m'
22- CYAN = ' \033 [96m'
23- GRAY = ' \033 [90m'
17+ RESET = " \033 [0m"
18+ BOLD = " \033 [1m"
19+ GREEN = " \033 [92m"
20+ YELLOW = " \033 [93m"
21+ RED = " \033 [91m"
22+ CYAN = " \033 [96m"
23+ GRAY = " \033 [90m"
2424
2525
2626# 构建配置
27- PROJECT_NAME = 'PyBuilder'
28- VERSION = '1.0.0'
29- ENTRY_FILE = 'main.py'
30- COMPANY_NAME = 'ASLant'
31- ICON_FILE = 'assets/app.ico'
32- OUTPUT_DIR = 'build'
27+ PROJECT_NAME = "PyBuilder"
28+ VERSION = "1.0.0"
29+ ENTRY_FILE = "main.py"
30+ COMPANY_NAME = "ASLant"
31+ ICON_FILE = "assets/app.ico"
32+ OUTPUT_DIR = "build"
33+
3334
3435def build ():
3536 """执行 Nuitka 构建"""
3637 # 获取平台信息
3738 os_type = platform .system ()
38- is_windows = os_type == ' Windows'
39- is_macos = os_type == ' Darwin'
40- is_linux = os_type == ' Linux'
41-
39+ is_windows = os_type == " Windows"
40+ is_macos = os_type == " Darwin"
41+ is_linux = os_type == " Linux"
42+
4243 # 获取终端宽度
4344 width = shutil .get_terminal_size ().columns
44- separator = '-' * width
45+ separator = "-" * width
4546 start_time = time .time ()
4647
47- print (f'{ Color .CYAN } { Color .BOLD } Building { PROJECT_NAME } v{ VERSION } on { os_type } { Color .RESET } ' )
48+ print (
49+ f"{ Color .CYAN } { Color .BOLD } Building { PROJECT_NAME } v{ VERSION } on { os_type } { Color .RESET } "
50+ )
4851 print (separator )
4952
5053 # 构建 Nuitka 命令
5154 cmd = [
5255 sys .executable ,
53- '-m' , 'nuitka' ,
54- '--mode=standalone' ,
55- f'--output-dir={ OUTPUT_DIR } ' ,
56- f'--output-filename={ PROJECT_NAME } ' ,
57- f'--output-folder-name={ PROJECT_NAME } .dist' ,
58- '--python-flag=-O' ,
59- '--quiet' ,
60- '--remove-output' ,
61- '--follow-imports' ,
62- '--assume-yes-for-downloads' ,
63- f'--include-data-dir={ os .path .join ('src' , 'style' )} ={ os .path .join ('src' , 'style' )} ' ,
64- f'--include-data-dir={ os .path .join ('assets' , 'pyfiglet' )} ={ 'pyfiglet' } ' ,
65- f'--include-data-dir={ 'docs' } ={ 'docs' } ' ,
56+ "-m" ,
57+ "nuitka" ,
58+ "--mode=standalone" ,
59+ f"--output-dir={ OUTPUT_DIR } " ,
60+ f"--output-filename={ PROJECT_NAME } " ,
61+ f"--output-folder-name={ PROJECT_NAME } .dist" ,
62+ "--lto=auto" ,
63+ "--jobs=16" ,
64+ "--python-flag=-O" ,
65+ # "--quiet",
66+ "--remove-output" ,
67+ "--include-package=pygments" ,
68+ f"--include-data-dir={ os .path .join ('src' , 'style' )} ={ os .path .join ('src' , 'style' )} " ,
69+ f"--include-data-dir={ 'docs' } ={ 'docs' } " ,
6670 ]
6771
6872 # Windows图标(仅Windows平台)
6973 if is_windows :
70- cmd .append (f' --windows-icon-from-ico={ ICON_FILE } ' )
74+ cmd .append (f" --windows-icon-from-ico={ ICON_FILE } " )
7175
7276 # Windows公司名称(仅Windows平台)
7377 if is_windows :
74- cmd .append (f' --windows-company-name={ COMPANY_NAME } ' )
78+ cmd .append (f" --windows-company-name={ COMPANY_NAME } " )
7579
7680 # Windows版本信息(仅Windows平台)
7781 if is_windows :
78- cmd .append (f' --windows-product-version={ VERSION } ' )
79- cmd .append (f' --windows-file-version={ VERSION } ' )
82+ cmd .append (f" --windows-product-version={ VERSION } " )
83+ cmd .append (f" --windows-file-version={ VERSION } " )
8084
8185 # 根据平台选择编译器
82- compiler = 'clang'
86+ compiler = "msvc"
8387 if is_windows :
8488 # Windows平台编译器
85- if compiler == ' clang' :
86- cmd .append (' --clang' )
87- elif compiler == ' mingw64' :
88- cmd .append (' --mingw64' )
89- elif compiler == ' clang-cl' :
90- cmd .append (' --clang-cl' )
89+ if compiler == " clang" :
90+ cmd .append (" --clang" )
91+ elif compiler == " mingw64" :
92+ cmd .append (" --mingw64" )
93+ elif compiler == " clang-cl" :
94+ cmd .append (" --clang-cl" )
9195 # msvc是默认,不需要参数
9296 elif is_linux :
9397 # Linux平台编译器
94- if compiler == ' clang' :
95- cmd .append (' --clang' )
98+ if compiler == " clang" :
99+ cmd .append (" --clang" )
96100 # gcc是默认,不需要参数
97101 elif is_macos :
98102 # macOS平台编译器
99- if compiler != ' clang' :
103+ if compiler != " clang" :
100104 # clang是macOS默认,其他需要指定
101- if compiler == ' gcc' :
102- print (f' { Color .YELLOW } 注意: macOS推荐使用Clang{ Color .RESET } ' )
105+ if compiler == " gcc" :
106+ print (f" { Color .YELLOW } 注意: macOS推荐使用Clang{ Color .RESET } " )
103107
104108 # 添加入口文件
105109 cmd .append (ENTRY_FILE )
106110
107111 # 执行构建
108- print (f' { Color .GRAY } Command:{ Color .RESET } ' )
109- print (f' { Color .GRAY } ' + ' ' .join (cmd ) + f' { Color .RESET } ' )
112+ print (f" { Color .GRAY } Command:{ Color .RESET } " )
113+ print (f" { Color .GRAY } " + " " .join (cmd ) + f" { Color .RESET } " )
110114 print (separator )
111- print (f' { Color .YELLOW } Building, please wait...{ Color .RESET } ' )
115+ print (f" { Color .YELLOW } Building, please wait...{ Color .RESET } " )
112116 print ()
113117
114118 try :
@@ -117,23 +121,25 @@ def build():
117121 elapsed_time = time .time () - start_time
118122 minutes = int (elapsed_time // 60 )
119123 seconds = int (elapsed_time % 60 )
120- print (f' { Color .GREEN } { Color .BOLD } Build successful!{ Color .RESET } ' )
124+ print (f" { Color .GREEN } { Color .BOLD } Build successful!{ Color .RESET } " )
121125 abs_output = os .path .abspath (OUTPUT_DIR )
122- print (f' { Color .GREEN } Output: { abs_output } { Color .RESET } ' )
126+ print (f" { Color .GREEN } Output: { abs_output } { Color .RESET } " )
123127 if minutes > 0 :
124- print (f' { Color .CYAN } Build time: { minutes } m { seconds } s{ Color .RESET } ' )
128+ print (f" { Color .CYAN } Build time: { minutes } m { seconds } s{ Color .RESET } " )
125129 else :
126- print (f' { Color .CYAN } Build time: { seconds } s{ Color .RESET } ' )
130+ print (f" { Color .CYAN } Build time: { seconds } s{ Color .RESET } " )
127131 return 0
128132 except subprocess .CalledProcessError as e :
129133 print (separator )
130- print (f'{ Color .RED } { Color .BOLD } Build failed: { Color .RESET } { Color .RED } { e } { Color .RESET } ' )
134+ print (
135+ f"{ Color .RED } { Color .BOLD } Build failed: { Color .RESET } { Color .RED } { e } { Color .RESET } "
136+ )
131137 return 1
132138 except Exception as e :
133139 print (separator )
134- print (f' { Color .RED } { Color .BOLD } Error: { Color .RESET } { Color .RED } { e } { Color .RESET } ' )
140+ print (f" { Color .RED } { Color .BOLD } Error: { Color .RESET } { Color .RED } { e } { Color .RESET } " )
135141 return 1
136142
137143
138- if __name__ == ' __main__' :
144+ if __name__ == " __main__" :
139145 sys .exit (build ())
0 commit comments