Automate your projects with Premake

🚀 Easily generate files for the make command, Visual Studio, Xcode, and more.


Automate your projects with Premake


We’ve previously talked about a similar tool called Xmake. Premake is similar but automates project files for IDEs like Visual Studio and Xcode.

Premake is an open-source build automation tool that generates project files (such as Makefiles, Visual Studio, Xcode, etc.) from scripts written in Lua.

Premake automates project setup for multiple platforms and IDEs. It does not compile directly but generates the appropriate build files for tools like:

  • make (GNU)
  • Visual Studio
  • Xcode
  • GNU Make
  • Code::Blocks
  • CMake (indirectly, with wrappers)

Most useful for cross-platform C/C++ projects.

Different versions require different configurations in premakeNUM.lua files—meaning premake4.lua is not compatible with premake5.lua.


Installation

On Windows, version 5 is available via WinGet. Just run:

winget install --id=Premake.Premake.5.Beta -e  

However, not all GNU/Linux distros have the latest version in their repositories. For example, Ubuntu only offers version 4:

sudo apt install premake4  

Alternatively, you can clone, compile, and install from source:

sudo apt install git build-essential  
git clone --depth=1 https://github.com/premake/premake-core.git  
cd premake-core  
make -f Bootstrap.mak linux  
sudo cp bin/release/premake5 /usr/local/bin/  
premake5 --version  

Usage

The process may vary depending on the Premake version. Example for Premake4:

mkdir -p MyProject/src  
cd MyProject  
vim src/main.cpp # Hello, World!  

Create a Premake4 file (e.g., vim premake4.lua):

solution "MyProject"  
   configurations { "Debug", "Release" }  

project "MyApp"  
   language "C++"  
   kind "ConsoleApp"  
   location "build"  
   files { "src/**.cpp", "include/**.hpp" }  
   includedirs { "include" }  

configuration "Debug"  
   targetdir "bin/Debug"  

configuration "Release"  
   targetdir "bin/Release"  

Generate the files with:

premake4 gmake # Unix  

Then compile and run:

make  
./bin/Debug/MyApp  

Version 5

Create a file named premake5.lua with the following content:

Basic example:

workspace "MyProject"  
   configurations { "Debug", "Release" }  
   language "C++"  
   location "build"  

project "MyApp"  
   kind "ConsoleApp"  
   files { "src/**.cpp", "include/**.h" }  
   includedirs { "include" }  
   targetdir "bin/%{cfg.buildcfg}"  

Generate project files for an IDE:

premake5 vs2022       # Visual Studio 2022  
premake5 gmake2       # Makefiles for Linux  
premake5 xcode4       # Xcode  

Compile:

  • Visual Studio: Open the .sln file and build.
  • Linux:
premake5 gmake2  
cd build  
make config=release  

For more details, check these links and the help menu:


compilers make


Share


YouTube channel

Subscribe


Marcos Oliveira

Marcos Oliveira

Software developer
https://github.com/terroo

Related articles