premake的使用方法

Premake学习记录

跟着TheCherno学习制作游戏引擎,其中用到了Premake5,以下是我对Premake5的一些理解
1.新建premake5.lua文件
2.打开文件编辑内容
3.内容结构如下:
解决方案的配置

workspace "Hazel"	//Hazel为解决方案名
	architecture "x86_64"	
	//解决方案平台为x64,"x86_64"改为“x64"结果不变,
	//改为"x32"时,解决方案平台为win 32
	startproject "Sandbox"	
	//将Sandbox设为开始项目
	configurations	//解决方案配置,默认配置是Debug,与顺序无关
	{
		"Debug",
		"Release",
		"Dist"	
	}
	outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"
	//cfg.buildcfg:解决方案配置名(Debug,Release等)
	//cfg.system:平台系统名(window,linux等)
	//cfg.architecture:解决方案平台名(x86,x86_x64)对应architecture "x32"/"x64"	
	//outputdir相当于全局变量,会在后面用到

在这里插入图片描述

项目的配置

project "Hazel"	//生成的项目名
	location "Hazel"		//项目配置文件的生成路径
	kind "SharedLib" 	
	//配置类型(.dll)最后生成动态库
	//如果"SharedLib" 改为 "ConsoleApp"则最后生成.exe应用程序
	language "C++" 	//语言为c++

	targetdir ("bin/" .. outputdir .."/%{prj.name}") 
	//prj.name为此项目名,指定输出目录
	//形如 "bin\Debug-windows-x86\Hazel"
	objdir ("bin-int/" .. outputdir .."/%{prj.name}")
	//指定中间目录,形如bin-int\Debug-windows-x86\Hazel
	//outputdir两边的..不可以去掉,否则报错,我猜是用来将变量值提取出来。

	files	//指定编译的文件类型
	{
		"%{prj.name}/src/**.h",
		"%{prj.name}/src/**.cpp"
	}
	
	includedirs	//附加包含目录,自定义头文件的位置
	{
		"%{prj.name}/vendor/spdlog/include"
	}

	filter "system:windows"	//针对windows系统,进行如下配置
		cppdialect "c++17"	//c++语言标准
		staticruntime "On"	//
		systemversion "latest"	//windows SDK版本

		defines	//预处理器定义,也就是预定义宏
		{
			"HZ_PLATFORM_WINDOWS",
			"HAZEL_BUILD_DLL"
		}

		postbuildcommands	//对 编译链接得到的二进制文件 进行操作
		{
			("{COPY} %{cfg.buildtarget.relpath} ../bin/" ..outputdir .. "/SandBox/")	//将当前目标项目生成的dll文件copy到指定的目录内
		}

	filter "configurations:Debug"
		defines "HZ_DEBUG"
		symbols "On"	//将项目管理器属性中 运行库改为多线程(MT)

	filter "configurations:Release"
		defines "HZ_RELEASE"	
		optimize "On"	//开启优化

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


//来自Sandbox项目
links
	{
		"Hazel" //链接Hazel项目给Sandbox项目
	}

4.将premake5.lua文件放在与解决方案相同的目录下(如果没有解决方案,则与项目目录放在一起) 打开命令行 输入 vendor\bin\premake\premake5.exe vs2017
vendor\bin\premake\是相对于premake5.lua所在位置的目录,vs2017是生成解决方案的版本
总结
premake5可以用来生成解决方案,并对项目管理器的属性进行相关配置,此脚本的一切配置都可以通过项目管理器属性配置实现。优点是可以将自己的个性化配置保存到premake5.lua文件中,便于后来者使用。
官方教程链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值