Hazel游戏引擎(007)Premake

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

前言

  • 此节目的

    由于之前配置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项目属性,能看到都选项都配置好了

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘建杰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值