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 $1$2) $(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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Magnum Lehar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值