Skip to content

Commit 5618e21

Browse files
committed
build: 编译测试.
1 parent 9b75827 commit 5618e21

2 files changed

Lines changed: 64 additions & 203 deletions

File tree

build_nuitka.py

Lines changed: 64 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -14,101 +14,105 @@
1414

1515
# ANSI 颜色代码
1616
class 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

3435
def 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())

msvc_build_nuitka.py

Lines changed: 0 additions & 145 deletions
This file was deleted.

0 commit comments

Comments
 (0)