Aurora Engine 游戏引擎入门 04(跨平台项目管理premake)


简介

本序列由澳大利亚的一个游戏引擎爱好者整理制作,使用了前瞻的语言技术,
经常多次的修改制作,一个个小的知识点贯通,非常具有引导学习意义!

Bilibili站转载学习,非个人研究,鸣谢!

原作者Github
Bilibili直达链接
YouTube直达链接


#1 premake是什么
#2 premake的好处

#1 2
premake是一个轻量级的项目管理软件,官方网站
使用premake可以使得项目非常简洁,对于跨平台开发非常友好,支持windows\linux\macosx;
比如我在windows上使用vs进行开发,其他人在linux使用其他的IDE开发,为了保持项目的配置统一,
使用一个管理软件来配置;传统的做法是使用cmake来处理,但cmake体量大并且有些不好用的地方;
premake非常的轻量级并且使用lua作为配置文件;
使用premake之后,和ide相关的文件都可以不用再提交了


#1 下载premake.exe
#2 配置当前项目的premake5.lua文件
#3 添加shell脚本生成

#1 2

-- premake5.lua
-- 配置的工作区域是全局的,通用的配置
workspace "Aurora"   -- 设置工作区目录
	architecture "x64" -- 设置项目使用的架构
	startproject "Sandbox" -- 默认启动的项目

	configurations -- 配置概述,解决方案平台
	{
		"Debug",
		"Release",
		"Dist"
	}

-- 配置输出目录,cfg既是上面的configurations的简写
-- 拼接目录类似:Debug-windows-x86_64
outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}" 

-- 开始配置一个静态库子项目'Aurora'
project "Aurora"
	location "Aurora" -- 项目的根目录,相对于当前文件来说,同级
	kind "SharedLib" -- 项目的类型,SharedLib静态库
	language "C++" -- 语言

	-- 生成的目标文件夹bin + Debug-windows-x86_64 + Aurora
	-- prj是project的简写
	targetdir ("bin/" .. outputdir .. "/%{prj.name}")
	-- 中间临时文件生成目录
	objdir ("bin-int/" .. outputdir .. "/%{prj.name}")

	-- 当前项目的源码目录
	files
	{
		"%{prj.name}/src/**.h",
		"%{prj.name}/src/**.cpp"
	}

	-- 当前项目需要附加的包含库
	includedirs
	{
		"%{prj.name}/vendor/spdlog/include"
	}

	filter "system:windows" -- 设置windows平台
		cppdialect "C++17" -- 使用C++17标准
		staticruntime "On" -- 多线程调试
		systemversion "latest" -- 最新版本的系统

		-- 添加windows平台上的预处理器定义
		defines
		{
			"AO_PLATFORM_WINDOWS",
			"AO_BUILD_DLL"
		}

		-- 编译后处理,复制一份dll到Sandbox项目下面
		postbuildcommands
		{
			-- {COPY}复制,之后的命令以空格来划分
			-- %{cfg.buildtarget.relpath} = 'bin\Debug-windows-x86_64\Aurora\Aurora.dll'
			("{COPY} %{cfg.buildtarget.relpath} ../bin/" .. outputdir .. "/Sandbox")
		}

	filter "configurations:Debug" -- 配置Debug的概述
		defines "AO_DEBUG"    -- 添加Debug的预编译器定义
		symbols "On"   -- 设置此宏有效

	filter "configurations:Release"
		defines "AO_RELEASE"
		optimize "On"

	filter "configurations:Dist"
		defines "AO_DIST"
		optimize "On"

-- 本来每个项目都要独立配置,这里就配置到一个文件里面
project "Sandbox"
	location "Sandbox"
	kind "ConsoleApp"
	language "C++"

	targetdir ("bin/" .. outputdir .. "/%{prj.name}")
	objdir ("bin-int/" .. outputdir .. "/%{prj.name}")

	files
	{
		"%{prj.name}/src/**.h",
		"%{prj.name}/src/**.cpp"
	}

	includedirs
	{
		"Aurora/vendor/spdlog/include",
		"Aurora/src"
	}

	-- 设置此项目引用'Aurora'项目
	links
	{
		"Aurora"
	}

	filter "system:windows"
		cppdialect "C++17"
		staticruntime "On"
		systemversion "latest"

		defines
		{
			"AO_PLATFORM_WINDOWS"
		}

	filter "configurations:Debug"
		defines "AO_DEBUG"
		symbols "On"

	filter "configurations:Release"
		defines "AO_RELEASE"
		optimize "On"

	filter "configurations:Dist"
		defines "AO_DIST"
		optimize "On"

#3

CALL vendor\bin\premake\premake5.exe vs2019
PAUSE

#1 .gitignore
#2 移除已经版本管理的cache

#1

# directory
.vs/
bin/
bin-int/

# file
*.sln
*.vcxproj
*.filters
*.user

#2

git rm -r --cached .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值