Hazel游戏引擎(007)Premake

news2025/1/12 11:59:29

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

文章目录

  • 前言
  • 操作步骤
    • premake
    • 写lua脚本文件
    • 执行premake.exe文件
    • 效果

前言

  • 此节目的

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

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

操作步骤

premake

  • 下载

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

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

  • 移动exe文件到sln文件下的vendor/bin/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
    

  • 写成.bat文件

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

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

    双击运行和cmd一样效果

效果

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

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/634633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java+SpringBoot的鞋类商品购物商城系统设计与实现

博主介绍:✌擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案…

业务部门的通病:想搞了大而全的软件

业务部门的通病:想搞个大而全的软件 怎么样评价软件功能的价值重要性? 软件的消耗成本是惊人的 中小企业一定要约束需求 做SaaS的香港上市公司有赞(做商城软件) 10年了还在亏损 趣讲大白话:大而全的功能是陷阱 【趣讲信…

Geek-PC项目 文档

一款后台管理项目 - React-geek-PC 项目介绍 ● 项目功能演示 - 登录、退出 - 首页 - 内容(文章)管理:文章列表、发布文章、修改文章● 技术 - React 官方脚手架 create-react-app - react hooks - 状态管理:mobx - UI 组件库…

ESP32网络应用 -- ESP32-S3在STA模式下创建TCP-CLIENT应用程序

在ESP32-S3初始化为Station模式并且成功获取IP地址后,说明ESP32-S3芯片的底层设施已经具备Wi-Fi网络通信能力,但在实际的应用场景里面,仅仅建立数据链路层,还是不能够满足应用程序的数据通信需求。 TCP/IP是一种使用广泛的网络传输协议,网络上并不缺乏关于TCP/IP的具体原…

Atcoder Beginner Contest 304——A-D题讲解

蒟蒻来讲题,还望大家喜。若哪有问题,大家尽可提! Hello, 大家好哇!本初中生蒟蒻讲解一下AtCoder Beginner Contest 304这场比赛的A-D题! A - First Player 题目描述 Problem Statement There are N N N people nu…

sequence2sequence

1. 基本模型 所谓的Seq2seq模型从字面上理解很简单,就是由一个序列到另一个序列的过程(比如翻译、语音等方面的应用): 那么既然是序列模型,就需要搭建一个RNN模型(神经单元可以是GRU模型或者是LSTM模型) 下面两篇文章提出了这样的seq2seq的模…

NVM安装教程

我是小荣,给个赞鼓励下吧! NVM安装教程 简介 nvm 是node.js的版本管理器,设计为按用户安装,并按 shell 调用。nvm适用于任何符合 POSIX 的 shell(sh、dash、ksh、zsh、bash),特别是在这些平台…

ChatGPT 五个写论文的神技巧,让你的老师对你刮目相看!

导读:ChatGPT这款AI工具在推出两个月内就累积了超过1亿用户。我们向您展示如何使用ChatGPT进行写作辅助,以及其他一些有用的写作技巧。 本文字数:2000,阅读时长大约:12分钟 ChatGPT这款AI工具在推出两个月内就累积了超…

【Java|golang】2460. 对数组执行操作

给你一个下标从 0 开始的数组 nums ,数组大小为 n ,且由 非负 整数组成。 你需要对数组执行 n - 1 步操作,其中第 i 步操作(从 0 开始计数)要求对 nums 中第 i 个元素执行下述指令: 如果 nums[i] nums[i…

物联网Lora模块从入门到精通(三)按键的读取与使用

一、前言 在Lora例程中,为我们提供了三个按键标志位,我们不需要手动再次初始化按键,即可完成按键的读取。 二、代码实现 首先,我们一起来阅读hal_key.c中的代码: /* Includes -------------------------------------…

点云地面滤波--patchwork++

文章目录 1前言2 反射噪声去除RNR3区域垂直平面拟合 (R-VPF)4自适应地面似然估计(A-GLE)5时序地面恢复TGR总结 1前言 patchwork是在patchwork的基础上进行改进的,主要有2个贡献: 提出了自适应地面似然估计(adaptive ground likelihood estimation (A-G…

Java实训日记第一天——2023.6.6

这里写目录标题 一、关于数据库的增删改查总结:五步法1.增2.删3.改4.查 二、设计数据库的步骤第一步:收集信息第二步:标识对象第三步:标识每个实体的属性第四步:标识对象之间的关系 一、关于数据库的增删改查 总结&am…

Java框架学习--Spring

1.Spring概念【托管很多对象的框架】 一个包含了众多工具方法的IoC容器。 1.1 什么是容器? 容器是用来容纳各种物品的(基本)装置。--来自百度百科 之前常见的容器有: List/Map-》数据存储容器 Tomcat-》Web容器 1.2什么是IoC? IoCInve…

【Docker】Docker对用户的应用程序使用容器技术遵循的五个步骤和GRSEC详细讲解(文末赠书)

前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介:热…

序列的有关知识

📢博客主页:盾山狂热粉的博客_CSDN博客-C、C语言,机器视觉领域博主📢努力努力再努力嗷~~~✨ 💡大纲 ⭕列表、元组、字符串都是序列,列表是可变序列,元组和字符串是不可变序列 一、跟序列相关的操作符 &am…

Hazel游戏引擎(008-009)事件系统

文中若有代码、术语等错误,欢迎指正 文章目录 008、事件系统-设计009、事件系统-自定义事件前言自定义事件类与使用声明与定义类代码包含头文件使用事件 事件调度器代码 C知识:FunctionBind用法function基本使用 012、事件系统-DemoLayer用EventDispache…

7-3 sdut-oop-6 计算各种图形的周长(多态)

定义接口或类 Shape,定义求周长的方法length()。 定义如下类,实现接口Shape或父类Shape的方法。 (1)三角形类Triangle (2)长方形类Rectangle (3)圆形类Circle等。 定义测试类Shap…

QT基础教程之一创建Qt项目

QT基础教程1创建Qt项目 根据模板创建 打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项 弹出New Project对话框,选择Qt Widgets Application 选择【Choose】按钮,弹出如下对话框 设置项目名称和路径,…

Cesium雷达追踪追踪(雷达探照效果)

Cesium雷达追踪追踪(圆锥体效果) 文章最后附有源码!!!!!!!!!!!!!!!!! 解析 第一步 、从gif图中可以看出,首先添加了两个运动的实体(在cesium entity与时间轴关联(添加运动轨迹))中有讲解 第二步、添加一个圆锥,修改圆锥朝向,来表示跟综照射效果,…

Windows安装MySQL及Python操作MySQL数据库脚本实例详解

1、Windows 上安装 MySQL 便于测试,笔者在 windows 上安装 MySQL,如有现成Linux下的MySQL和Python环境,也可直接使用。MySQL的官网下载链接安装步骤1)下载后的mysql-5.7.23-winx64.zip安装包解压至某一位置,在mysql-5.7.23-winx6…