feat(build): 增强Windows支持,动态检测目标机器类型

This commit is contained in:
Mikachu2333
2025-10-14 01:48:46 +08:00
parent 91692d6215
commit 717b0f96b8

View File

@@ -64,8 +64,18 @@ endif
#======== Compilation Config ========== #======== Compilation Config ==========
CFLAGS += -Iinclude -Ilib -Isrc/framework -Isrc/res CFLAGS += -Iinclude -Ilib -Isrc/framework -Isrc/res
Target-Is-Windows = 0
Use-Windows-Resource = 0
ifeq ($(On-Windows), 1) ifeq ($(On-Windows), 1)
CLANG_FLAGS = -target x86_64-pc-windows-gnu CLANG_FLAGS = -target x86_64-pc-windows-gnu
Target-Machine := $(shell $(CC) -dumpmachine 2>nul || echo unknown)
ifneq ($(findstring mingw,$(Target-Machine)),)
Target-Is-Windows = 1
else ifneq ($(findstring windows,$(Target-Machine)),)
Target-Is-Windows = 1
endif
Use-Windows-Resource := $(Target-Is-Windows)
endif endif
ifeq ($(CC), clang) ifeq ($(CC), clang)
@@ -150,7 +160,7 @@ build-in-debug-mode:
build-in-release-mode: CFLAGS += $(CFLAGS_optimization) build-in-release-mode: CFLAGS += $(CFLAGS_optimization)
build-in-release-mode: build-in-release-mode:
@echo Starting: Build in RELEASE mode: \'$(CC)\' $(CFLAGS) -o $(ReleaseMode-Target-Name) @echo Starting: Build in RELEASE mode: \'$(CC)\' $(CFLAGS) -o $(ReleaseMode-Target-Name)
ifeq ($(On-Windows), 1) ifeq ($(Use-Windows-Resource), 1)
@if exist src\\res\\chsrc.res del src\\res\\chsrc.res @if exist src\\res\\chsrc.res del src\\res\\chsrc.res
@windres src\\res\\win_res.rc -O coff -o src\\res\\chsrc.res -Iinclude -Ilib -Isrc\\framework -Isrc\\res @windres src\\res\\win_res.rc -O coff -o src\\res\\chsrc.res -Iinclude -Ilib -Isrc\\framework -Isrc\\res
@$(CC) src\\chsrc-main.c src\\res\\chsrc.res $(CFLAGS) $(_C_Warning_Flags) -o $(ReleaseMode-Target-Name) @$(CC) src\\chsrc-main.c src\\res\\chsrc.res $(CFLAGS) $(_C_Warning_Flags) -o $(ReleaseMode-Target-Name)
@@ -163,7 +173,7 @@ endif
# CI release mode 的配置在该文件上方 # CI release mode 的配置在该文件上方
build-in-ci-release-mode: build-in-ci-release-mode:
@echo Starting: Build in CI-RELEASE mode: \'$(CC)\' $(CFLAGS) -o $(CIReleaseMode-Target-Name) @echo Starting: Build in CI-RELEASE mode: \'$(CC)\' $(CFLAGS) -o $(CIReleaseMode-Target-Name)
ifeq ($(On-Windows), 1) ifeq ($(Use-Windows-Resource), 1)
@windres src\\res\\win_res.rc -O coff -o src\\res\\chsrc.res -Iinclude -Ilib -Isrc\\framework -Isrc\\res @windres src\\res\\win_res.rc -O coff -o src\\res\\chsrc.res -Iinclude -Ilib -Isrc\\framework -Isrc\\res
@$(CC) src\\chsrc-main.c src\\res\\chsrc.res $(CFLAGS) $(_C_Warning_Flags) -o $(CIReleaseMode-Target-Name) @$(CC) src\\chsrc-main.c src\\res\\chsrc.res $(CFLAGS) $(_C_Warning_Flags) -o $(CIReleaseMode-Target-Name)
else else