Premake5
最近我在搭建一个OpenGL的基础开发环境,为了适配不同版本的VisualStudio,我决定试一试Premake,利用Premake自动化生成各个版本的vs解决方案。第一次看到这个软件是在 TheCherno 大神的教学视频里, 感觉lua脚本写着非常舒服,在学习的过程中顺便记录一下。
1.准备环境
新建一个空文件夹:C:\dev\HelloPremake
2.准备代码
新建src文件,并放入一个main.cpp文件:
main.cpp内容:
#include <stdio.h>
int main()
{
printf("Hello Premake!\n");
getchar();
return 0;
}
3.准备Premake5.exe
点击此处下载premake5.exe并放入工作文件夹:
4.准备lua脚本
在HelloPremake文件夹下新建“premake5.lua”脚本,编写第一个脚本:
-- workspace:对应vs中的解决方案
workspace "HelloPremake"
configurations { "Debug", "Release" } -- 解决方案配置项,Debug和Release默认配置
location "prj" -- 解决方案文件夹,这是我自己喜欢使用的project简写
-- project:对应vs中的项目
project "HelloPremake"
kind "ConsoleApp" -- 项目类型:控制台程序
language "C++" -- 工程采用的语言,Premake5.0当前支持C、C++、C#
files { "**.cpp" } -- 指定加载哪些文件或哪些类型的文件
-- Debug配置项属性
filter "configurations:Debug"
defines { "DEBUG" } -- 定义DEBUG宏(这可以算是默认配置)
symbols "On" -- 开启调试符号,
-- Release配置项属性
filter "configurations:Release"
defines { "NDEBUG" } -- 定义NDEBUG宏(这可以算是默认配置)
optimize "On" -- 开启优化参数
5.构建工程
在cmd命令中进入HelloPremake文件夹下,键入命令"premake5 vs2022"并回车:
(这里我生成的是vs2022,其实是Premake5.0是支持vs2005-2022的)
此时prj文件夹下生成了HelloPremake.vcxproj工程文件和HelloPremake.sln解决方案文件:
编译运行,没有问题:
6.完善脚本
此时的工程只有Win32平台,接下来我还想要加入x64平台配置,并且重新制定输出目录和中间对象目录,继续修改premake5.lua脚本:
-- workspace:对应vs中的解决方案
workspace "HelloPremake"
configurations { "Debug", "Release" } -- 解决方案配置项,Debug和Release默认配置
location "prj" -- 解决方案文件夹,这是我自己喜欢使用的project简写
-- 增加平台配置,我希望有Win32和x64两种平台
platforms
{
"Win32",
"x64"
}
-- Win32平台配置属性
filter "platforms:Win32"
architecture "x86" -- 指定架构为x86
targetdir ("bin/%{cfg.buildcfg}_%{cfg.platform}/") -- 指定输出目录
objdir ("obj/%{cfg.buildcfg}_%{cfg.platform}/") -- 指定中间目录
-- x64平台配置属性
filter "platforms:x64"
architecture "x64" -- 指定架构为x64
targetdir ("bin/%{cfg.buildcfg}_%{cfg.platform}/") -- 指定输出目录
objdir ("obj/%{cfg.buildcfg}_%{cfg.platform}/") -- 指定中间目录
-- project:对应vs中的项目
project "HelloPremake"
kind "ConsoleApp" -- 项目类型:控制台程序
language "C++" -- 工程采用的语言,Premake5.0当前支持C、C++、C#
files { "**.cpp" } -- 指定加载哪些文件或哪些类型的文件
-- Debug配置项属性
filter "configurations:Debug"
defines { "DEBUG" } -- 定义DEBUG宏(这可以算是默认配置)
symbols "On" -- 开启调试符号,
-- Release配置项属性
filter "configurations:Release"
defines { "NDEBUG" } -- 定义NDEBUG宏(这可以算是默认配置)
optimize "On" -- 开启优化参数
运行“premake5 vs2022”重新生成解决方案并打开:
此时增加了x64平台配置,并将输出目录和中间目录重新定位到了与代码文件夹和项目文件夹同级的目录中,接下来重新生成各个配置项,运行都没有问题:
上面的配置对我这个强迫症来说可以刚好适应了,接下来有时间继续学习。