0e636e275d
- 覆盖全部 10 个案例(原 Readme 只到 case06) - 新增案例选择指南表格 - Readme.html 为深色主题独立 HTML 页面 (含卡片布局、标签分类、代码高亮、响应式设计) - 各案例详情对齐最新配置参数
83 lines
2.7 KiB
Makefile
83 lines
2.7 KiB
Makefile
# engines/c/Makefile
|
||
# 跨平台编译:make → 本地系统编译
|
||
# make linux → Linux 交叉编译(需 x86_64-linux-gnu-gcc)
|
||
# make windows → Windows 交叉编译(需 x86_64-w64-mingw32-gcc)
|
||
# make macos → macOS 交叉编译(需 osxcross 工具链)
|
||
|
||
CC = gcc
|
||
CFLAGS = -O3 -march=native -Wall -Wextra
|
||
LDFLAGS = -lm
|
||
SRCS = main.c
|
||
LIB_SRC = dynamics_lib.c
|
||
|
||
# 自动检测系统
|
||
UNAME_S := $(shell uname -s 2>/dev/null || echo Windows)
|
||
|
||
# 目标文件名:统一使用 .exe 后缀(方便 Python 跨平台调用)
|
||
TARGET = build/dynamics_c.exe
|
||
|
||
# DLL 目标(平台自动选择后缀)
|
||
ifeq ($(UNAME_S),Linux)
|
||
DLL_TARGET = build/dynamics_c.so
|
||
DLL_FLAGS = -shared -fPIC
|
||
else ifeq ($(UNAME_S),Darwin)
|
||
DLL_TARGET = build/dynamics_c.dylib
|
||
DLL_FLAGS = -dynamiclib
|
||
else
|
||
DLL_TARGET = build/dynamics_c.dll
|
||
DLL_FLAGS = -shared
|
||
endif
|
||
|
||
# ── 本地编译 ─────────────────────────────────
|
||
.PHONY: all dll clean linux windows macos
|
||
|
||
all: $(TARGET)
|
||
|
||
dll: $(DLL_TARGET)
|
||
|
||
$(TARGET): $(SRCS) | build
|
||
$(CC) $(CFLAGS) -o $@ $(SRCS) $(LDFLAGS)
|
||
@echo " === C engine built: $@ ==="
|
||
|
||
$(DLL_TARGET): $(LIB_SRC) | build
|
||
$(CC) $(CFLAGS) $(DLL_FLAGS) -o $@ $(LIB_SRC) $(LDFLAGS)
|
||
@echo " === C DLL built: $@ ==="
|
||
|
||
build:
|
||
mkdir -p build
|
||
|
||
# ── 交叉编译 ─────────────────────────────────
|
||
# Linux → Linux (x86_64)
|
||
linux: CROSS_PREFIX = x86_64-linux-gnu-
|
||
linux: CC = $(CROSS_PREFIX)gcc
|
||
linux: CFLAGS = -O3 -march=x86-64 -Wall -Wextra
|
||
linux: $(SRCS) | build
|
||
$(CC) $(CFLAGS) -o build/dynamics_c_linux.exe $(SRCS) $(LDFLAGS)
|
||
@echo " === Linux binary: build/dynamics_c_linux.exe ==="
|
||
|
||
# 任意平台 → Windows (x86_64)
|
||
# 需要安装 MinGW 交叉编译器:
|
||
# apt install mingw-w64 (Debian/Ubuntu)
|
||
# brew install mingw-w64 (macOS)
|
||
windows: CROSS_PREFIX = x86_64-w64-mingw32-
|
||
windows: CC = $(CROSS_PREFIX)gcc
|
||
windows: CFLAGS = -O3 -march=x86-64 -Wall -Wextra
|
||
windows: $(SRCS) | build
|
||
$(CC) $(CFLAGS) -o build/dynamics_c_win.exe $(SRCS) $(LDFLAGS)
|
||
@echo " === Windows binary: build/dynamics_c_win.exe ==="
|
||
|
||
# 任意平台 → macOS (x86_64)
|
||
# 需要安装 osxcross 工具链
|
||
macos: CROSS_PREFIX = x86_64-apple-darwin-
|
||
macos: CC = $(CROSS_PREFIX)gcc
|
||
macos: CFLAGS = -O3 -march=x86-64 -Wall -Wextra
|
||
macos: $(SRCS) | build
|
||
$(CC) $(CFLAGS) -o build/dynamics_c_mac.exe $(SRCS) $(LDFLAGS)
|
||
@echo " === macOS binary: build/dynamics_c_mac.exe ==="
|
||
|
||
# ── 编译所有平台 ──────────────────────────────
|
||
all-platforms: linux windows macos
|
||
|
||
clean:
|
||
rm -rf build *.o
|