Hazel游戏引擎(007)Premake

这篇具有很好参考价值的文章主要介绍了Hazel游戏引擎(007)Premake。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文中若有代码、术语等错误,欢迎指正

前言

  • 此节目的

    由于之前配置VS项目各项属性需要根据不同平台手动一个一个设置,很麻烦,缺乏灵活性。

    用lua脚本配置项目属性,使用premake运行程序一键生成VS项目及属性,更灵活简便

操作步骤

premake

  • 下载

    github下载网址:https://github.com/premake/premake-core

    点击tag的release,下载zip文件,解压出来是exe文件

    Hazel游戏引擎(007)Premake,Hazel游戏引擎,游戏引擎,lua,premake

  • 移动exe文件到sln文件下的vendor/bin/premake下

    Hazel游戏引擎(007)Premake,Hazel游戏引擎,游戏引擎,lua,premake

写lua脚本文件

  • 关于premake如何使用,可以访问wiki

    https://github.com/premake/premake-core/wiki

  • 脚本文件

    在sln文件夹下,新建premake5.lua文件,并写下项目配置

    workspace "Hazel"		-- sln文件名
    	architecture "x64"	
    	configurations{
    		"Debug",
    		"Release",
    		"Dist"
    	}
    -- https://github.com/premake/premake-core/wiki/Tokens#value-tokens
    -- 组成输出目录:Debug-windows-x86_64
    outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"
    
    project "Hazel"		--Hazel项目
    	location "Hazel"--在sln所属文件夹下的Hazel文件夹
    	kind "SharedLib"--dll动态库
    	language "C++"
    	targetdir ("bin/" .. outputdir .. "/%{prj.name}") -- 输出目录
    	objdir ("bin-int/" .. outputdir .. "/%{prj.name}")-- 中间目录
    
    	-- 包含的所有h和cpp文件
    	files{
    		"%{prj.name}/src/**.h",
    		"%{prj.name}/src/**.cpp"
    	}
    	-- 包含目录
    	includedirs{
    		"%{prj.name}/vendor/spdlog/include"
    	}
    	-- 如果是window系统
    	filter "system:windows"
    		cppdialect "C++17"
    		-- On:代码生成的运行库选项是MTD,静态链接MSVCRT.lib库;
    		-- Off:代码生成的运行库选项是MDD,动态链接MSVCRT.dll库;打包后的exe放到另一台电脑上若无这个dll会报错
    		staticruntime "On"	
    		systemversion "latest"	-- windowSDK版本
    		-- 预处理器定义
    		defines{
    			"HZ_PLATFORM_WINDOWS",
    			"HZ_BUILD_DLL"
    		}
    		-- 编译好后移动Hazel.dll文件到Sandbox文件夹下
    		postbuildcommands{
    			("{COPY} %{cfg.buildtarget.relpath} ../bin/" .. outputdir .. "/Sandbox")
    		}
    	-- 不同配置下的预定义不同
    	filter "configurations:Debug"
    		defines "HZ_DEBUG"
    		symbols "On"
    
    	filter "configurations:Release"
    		defines "HZ_RELEASE"
    		optimize "On"
    
    	filter "configurations:Dist"
    		defines "HZ_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"
    	}
    	-- 同样包含spdlog头文件
    	includedirs{
    		"Hazel/vendor/spdlog/include",
    		"Hazel/src"
    	}
    	-- 引用hazel
    	links{
    		"Hazel"
    	}
    
    	filter "system:windows"
    		cppdialect "C++17"
    		staticruntime "On"
    		systemversion "latest"
    
    		defines{
    			"HZ_PLATFORM_WINDOWS"
    		}
    
    	filter "configurations:Debug"
    		defines "HZ_DEBUG"
    		symbols "On"
    
    	filter "configurations:Release"
    		defines "HZ_RELEASE"
    		optimize "On"
    
    	filter "configurations:Dist"
    		defines "HZ_DIST"
    		optimize "On"
    

执行premake.exe文件

  • cmd

    vendor\bin\premake\premake5.exe vs2019
    

    Hazel游戏引擎(007)Premake,Hazel游戏引擎,游戏引擎,lua,premake

  • 写成.bat文件

    新建GenerateProjects.bat文件放在.sln文件同文件夹下

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

    双击运行和cmd一样效果

    Hazel游戏引擎(007)Premake,Hazel游戏引擎,游戏引擎,lua,premake

效果

右键Hazel项目与Sandbox项目属性,能看到都选项都配置好了

Hazel游戏引擎(007)Premake,Hazel游戏引擎,游戏引擎,lua,premake文章来源地址https://www.toymoban.com/news/detail-553165.html

到了这里,关于Hazel游戏引擎(007)Premake的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hazel 引擎学习笔记

    https://youtu.be/etdSXlVjXss 我感觉自己照抄视频中的脚本还是有点慢了 因为你不知道他什么时候加了什么东西,或者自己照抄就很容易抄错 我觉得最好的方法就是自己快速过一遍他的视频,知道他大概的思路是怎么样的,然后自己再拉取那个 commit 的代码,用 diff 方便看他具体修

    2024年02月13日
    浏览(39)
  • 最全中级Unity面试题(引擎,渲染,Lua等)

    打算年底找工作,所以趁着年前整理波面试题。下面是部分内容,更多内容可以通过底部关注我的公众号获取。 1.UI的优化方案 记录最全面的ugui优化策略_bommy游戏的博客-CSDN博客 2.图集的压缩格式 3.减少GC的方式 Unity优化之GC——合理优化Unity的GC - zblade - 博客园 Unity GC垃圾回

    2024年02月01日
    浏览(39)
  • 【游戏逆向】Lua游戏逆向及破解方法介绍

    随着手游的发展,越来越多的Cocos-lua端游开发者转移到手游平台。Lua脚本编写逻辑的手游也是越来越多,如梦幻西游、刀塔传奇、开心消消乐、游龙英雄、奇迹暖暖、疾风猎人、万万没想到等手游。随着Lua手游的增加,其安全性更值得关注,在此归纳一些常用的分析方法,同

    2024年02月04日
    浏览(34)
  • Lua语言实现游戏动作

    Lua是一种轻量级的脚本语言,它具有高效性、可扩展性和易学性等优点。在游戏开发领域,Lua语言得到了广泛应用。Lua语言可以用来实现游戏动作,包括角色行走、攻击、技能释放等。本文将详细介绍如何使用Lua语言实现游戏动作。 一、Lua语言介绍 Lua语言是一种轻量级的脚

    2023年04月14日
    浏览(29)
  • lua实现游戏全局鼠标点击效果

    最近在优化项目,策划提了一个需求,需要实现一个通用点击特效。 首先想到的是改变鼠标指针样式,这个以前学过,还有点印象,以前刚开始学unity的时候,记得看到过一个方法可以改变游戏中鼠标指针样式。 方法如下:选择“Edit”——“Project Setting”,打开项目设置 一

    2024年02月10日
    浏览(34)
  • 中文编程入门(Lua5.4.6中文版)第十二章 Lua 协程 参考《愿神》游戏

    在《愿神》的提瓦特大陆上,每一位冒险者都拥有自己的独特力量——“神之眼”,他们借助元素之力探索广袤的世界,解决谜题,战胜敌人。而在提瓦特的科技树中,存在着一项名为“协同程序”的高级秘术,它使冒险者能够以一种独特的方式调度和管理自己的行动序列,

    2024年04月28日
    浏览(27)
  • Multiserver游戏服务器Demo[C++&Lua]

    代码文件参考下述详解的类图,工程参考第零章工程说明 对Socket库进行封装,抹平Socket的WindowLinux的平台差异。 C++嵌入lua脚本,增加开发者编码效率,减少编译时间消耗。 非阻塞网络IO 多线程任务模型 多服务模型 主要是对C++的Socket库进行封装,使其更加易用,抹平window和

    2024年02月06日
    浏览(23)
  • [Lua][Love] 打砖块游戏实现过程与知识点

    本文旨在根据LOVE2D官方文档和教程实现打砖块的游戏,记录部分实现过程和重要知识点 目标摧毁所有砖块 玩家控制球拍左右滑动反弹小球 小球摧毁砖块 小球保持在屏幕内 小球碰到屏幕底部,GAME OVER 在加载引擎的时候回调该函数修改引擎基本参数,默认参数可看Config Files

    2024年02月11日
    浏览(31)
  • [Lua][Love Engine] 打砖块游戏实现过程与知识点

    本文旨在根据LOVE2D官方文档和教程实现打砖块的游戏,记录部分实现过程和重要知识点 目标摧毁所有砖块 玩家控制球拍左右滑动反弹小球 小球摧毁砖块 小球保持在屏幕内 小球碰到屏幕底部,GAME OVER 在加载引擎的时候回调该函数修改引擎基本参数,默认参数可看Config Files

    2024年02月12日
    浏览(24)
  • Unity3D 如何把全部游戏逻辑都放到lua层实现详解

    Unity3D是一款非常流行的游戏开发引擎,它支持C#、JavaScript和Boo等脚本语言。然而,有时候我们可能希望将全部游戏逻辑都放到Lua层实现,这样可以更方便地进行游戏逻辑的修改和调试。本文将详细介绍如何使用Unity3D将全部游戏逻辑都放到Lua层实现。 对啦!这里有个游戏开发

    2024年01月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包