很多朋友们在构建项目的时候应该都使用过CMake,在github和gitee的很多项目上面都能看到关于CMake的脚本。不过笔者认为,这东西有时候实在是过于繁重了,特别是这个构建的项目足够大的时候。在这里笔者为大家介绍一款轻量轻量化的软件Premake,它可以很方便构建visual studio 和 XCode 项目。如果看过笔者的《visual studio OpenGL配置》这篇文章的朋友,就能领会到项目配置是一下多么麻烦的事,每个新的OpenGL项目都需重新配置的话,那将会是一件让人非常恼火的事情,这里笔者创建一个项目OpenGL项目初始化可以棒大家省去这个烦恼,通过这个项目来告诉大家premake的使用方法。
1、premake下载
下载网址:premake下载网址 因为要进入github所以尽量开加速器
这里笔者选择windows版的压缩进行下载,因为笔者使用的是windows10系统。如果如果读者使用的是其他的系统,就请根据自己系统进行下载。
整个压缩包当中,需要使用到的是premake5.exe文件
不过大家也可以不用下载,为到家准备的项目OpenGL项目初始化当中有这个启动程序。
大家可以自行选择现在或者是克隆这个项目
2、premake 的使用
premake 需要编写premake脚本然后然后启动premake5.exe 进行解释运行。
1、premake脚本
premake5.lua 脚本具体如下
workspace "OpenGLInitial" //对应的解决方案的名称
architecture "x86_64" //程序采用的架构
configurations{ //配置管理器
"Debug",
"Release"
}
outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}" //定义变量
project "GLAD" //项目的名称
location "GLAD" //指定文件的路径
kind "StaticLib" //输出形式
language "C++" //编码语言
targetdir("bin/" ..outputdir.. "/%{prj.name}") //输出文件的路径
objdir ("bin-int/" ..outputdir.. "/%{prj.name}") //中间文件
files{
"%{prj.name}/include/**.h", //项目当中需要包含的文件
"%{prj.name}/src/**.c"
}
includedirs{ //附加应用路径
"%{prj.name}/include"
}
filter "system:windows" //使用系统
cppdialect "C++17" //C++版本
staticruntime "On" //是否支持多线程
systemversion "latest" //系统版本
filter "configurations:Debug" //目前不知道什么作用
defines "GL_DEBUG"
symbols "On"
filter "configurations:Release"
defines "GL_RELEASE"
symbols "On"
project "GLFW"
location "GLFW"
kind "StaticLib"
language "C++"
targetdir("bin/"..outputdir.."/%{prj.name}")
objdir("bin-int/"..outputdir.."/%{prj.name}")
files{
"%{prj.name}/include/**.h",
"%{prj.name}/src/**.c",
"%{prj.name}/src/**.h",
"%{prj.name}/deps/**.h",
"%{prj.name}/deps/**.c"
}
includedirs{
"%{prj.name}/include"
}
filter "system:windows"
cppdialect "C++17"
staticruntime "On"
systemversion "latest"
defines{
"_GLFW_WIN32",
"_CRT_SECURE_NO_WARNINGS"
}
filter "configurations:Debug"
defines "GL_DEBUG"
symbols "On"
filter "configurations:Release"
defines "GL_RELEASE"
symbols "On"
project "ImGUI"
location "ImGUI"
kind "StaticLib"
language "C++"
targetdir("bin/" ..outputdir.. "/%{prj.name}")
objdir("bin-int/" ..outputdir.. "/%{prj.name}")
files{
"%{prj.name}/**.h",
"%{prj.name}/**.cpp",
"%{prj.name}/backends/**.cpp",
"%{prj.name}/backends/**.h"
}
includedirs{
"%{prj.name}",
"GLFW/include"
}
filter "system:windows"
cppdialect "C++17"
staticruntime "On"
systemversion "latest"
filter "configurations:Debug"
defines "GL_DEBUG"
symbols "On"
filter "configurations:Release"
defines "GL_RELEASE"
symbols "On"
project "OpenGLInitial"
location "OpenGLInitial"
kind "ConsoleApp"
language "C++"
targetdir("bin/" ..outputdir.. "/%{prj.name}")
objdir ("bin-int/" ..outputdir.. "/%{prj.name}")
files{
"%{prj.name}/src/**.cpp"
}
includedirs{
"GLAD/include",
"GLFW/include",
"ImGUI",
"ImGUI/backends"
}
links{
"GLAD", //链接所需要的动态库或者是静态库
"GLFW",
"ImGUI"
}
filter "system:windows"
cppdialect "C++17"
staticruntime "On"
systemversion "latest"
filter "configurations:Debug"
defines "GL_DEBUG"
symbols "On"
filter "configurations:Release"
defines "GL_RELEASE"
symbols "On"
在具体介绍这个脚本之前,先双击GenerateProject.bat生成项目。注意,因为这当中需要启动命令行,项目的文件路径不能有中文
2、premake脚本介绍
workspace "OpenGLInitial" //对应的解决方案的名称
architecture "x86_64" //程序采用的架构
configurations{ //配置管理器
"Debug",
"Release"
}
project "GLAD" //项目的名称
location "GLAD" //指定文件的路径
kind "StaticLib" //输出形式 (这里是静态库)
language "C++" //编码语言
项目名称
指定项目文件路径
使用的语言和输出的形式
outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}" //定义变量
//%{cfg.buildcfg} 当前配置管理模式
//%{cfg.system} 计算机当前使用的系统
//%{cfg.architecture} 程序的架构
targetdir("bin/" ..outputdir.. "/%{prj.name}") //输出文件的路径
objdir ("bin-int/" ..outputdir.. "/%{prj.name}") //中间文件输出路径
项目当中需要包含哪些文件,注意这些文件需要存放在项目文件夹当中,premake是不会自动去生成这些文件的
files{
"%{prj.name}/include/**.h", //项目当中需要包含的文件
"%{prj.name}/src/**.c"
}
附加包含目录
includedirs{ //附加应用路径
"%{prj.name}/include"
}
指定使用系统,C++版本,是否支持多线程
filter "system:windows" //使用系统
cppdialect "C++17" //C++版本
staticruntime "On" //是否支持多线程
systemversion "latest" //系统版本
预定义宏
defines{
"_GLFW_WIN32",
"_CRT_SECURE_NO_WARNINGS"
}
链接库
links{
"GLAD", //链接所需要的动态库或者是静态库
"GLFW",
"ImGUI"
}
到这里是对premake脚本的一些简单介绍,脚本当中的项目名称,指定文件,都可以根据自己需要进行修改,然后重新生成项目即可。如果有的读者没有vs2022不需要强迫自己去下载,只需要将GenerateProject.bat脚本中的 vs2022 改成自己有的VS版本就可以了。
CALL depens\premake\premake5.exe vs2022
PAUSE
自动部署完毕,点击运行看一下结果如何,将控制台项目设置为启动项。
如果想要了解跟多premake脚本语法,请查看官方的维基百科。
总结
虽然使用premake比直接去进行项目配置更加的复杂,但是它省去了我们需要重复配置项目的工作,让整个项目变得更加容易管理。
标签:Premake,name,..,OpenGL,部署,premake,C++,prj,filter From: https://blog.csdn.net/qq_45651072/article/details/142256632