vulkan游戏引擎的makefile启动环境实现

1.makefile.engine.windows.mak

DIR := (subst /,\\,{CURDIR})

BUILD_DIR := bin

OBJ_DIR := obj

ASSEMBLY := engine

EXTENSION := .dll

COMPILER_FLAGS := -g -MD -Werror=vla -fdeclspec #-fPIC

INCLUDE_FLAGS := -Iengine\src -I$(VULKAN_SDK)\include

LINKER_FLAGS := -g -shared -luser32 -lvulkan-1 -L(VULKAN_SDK)\\Lib -L(OBJ_DIR)\engine

DEFINES := -D_DEBUG -DKEXPORT -D_CRT_SECURE_NO_WARNINGS

#Make does not offer((

rwildcard = (wildcard 12) (foreach d,(wildcard 1*),(call rwildcard,d/,$2))

SRC_FILES := (call rwildcard,(ASSEMBLY)/,*.c)

DIRECTORIES := \(ASSEMBLY)\\src (subst (DIR),,(shell dir $(ASSEMBLY)\src /S /AD /B | findstr /i src))

OBJ_FILES := (SRC_FILES:%=(OBJ_DIR)/%.o)

all: scaffold compile link

.PHONY: scaffold

scaffold:#create build directory

@echo Scaffold folder structure...

-@setlocal enableextensions enabledelayedexpansion && mkdir (addprefix (OBJ_DIR),$(DIRECTORIES)) 2>NUL || cd .

-@setlocal enableextensions enabledelayedexpansion && mkdir $(BUILD_DIR) 2>NUL || cd .

@echo Done.

.PHONY:link

link: scaffold $(OBJ_FILES)

@echo Linking $(ASSEMBLY)...

@clang (OBJ_FILES) -o (BUILD_DIR)/(ASSEMBLY)(EXTENSION) $(LINKER_FLAGS)

.PHONY: compile

compile:

@echo Compiling...

.PHONY: clean

clean:

if exist (BUILD_DIR)\\(ASSEMBLY)(EXTENSION) del (BUILD_DIR)\(ASSEMBLY)(EXTENSION)

rmdir /s /q (OBJ_DIR)\\(ASSEMBLY)

$(OBJ_DIR)/%.c.o: %.c

@echo $<...

@clang \< (COMPILER_FLAGS) -c -o @ (DEFINES) $(INCLUDE_FLAGS)

相关推荐
Avalon7122 小时前
Unity3D响应式渲染UI框架UniVue
游戏·ui·unity·c#·游戏引擎
风酥糖4 小时前
Godot游戏练习01-第33节-新增会爆炸的敌人
游戏·游戏引擎·godot
郑寿昌16 小时前
UE5与UE6在Lumen和Nanite的差异解析
游戏引擎·图形渲染·着色器
郑寿昌1 天前
UE6 AI加速Lumen光线追踪降噪技术解析
人工智能·游戏引擎
晴夏。1 天前
GAS下的网络同步的全面分析【超级全面】
游戏引擎·ue·gas·网络同步
田鸡_1 天前
Unity新输入系统(Input System)教学篇
unity·游戏引擎·游戏程序
EQ-雪梨蛋花汤1 天前
【Unity笔记】Unity 音游模板与免费资源:高效构建节奏游戏开发全指南
笔记·unity·游戏引擎
微莱羽墨1 天前
零、0基础入门Unity 安装详细教程(2026最新版教程,安装Unity看这一篇就够了!)
unity·游戏引擎·unity安装
nnsix1 天前
Unity 刚体的 默认力、瞬时力 区别
unity·游戏引擎
nnsix1 天前
Unity Sprite的 Generate Physics Shape 参数解释
unity·游戏引擎