Nós já falamos de uma ferramenta similar que é o Xmake, o Premake é similar, mas automatiza arquivos para IDEs como Visual Studio e Xcode.
Premake é uma ferramenta de automação de build open-source que gera arquivos de projeto (como Makefiles, Visual Studio, Xcode etc.) a partir de scripts escritos em Lua.
Premake automatiza a criação de projetos para múltiplas plataformas e IDEs. Ele não compila diretamente, mas gera os arquivos de build apropriados para ferramentas como:
make
(GNU)Visual Studio
Xcode
GNU Make
Code::Blocks
CMake
(indiretamente, com wrappers)Útil principalmente em projetos C/C++ multiplataforma.
As versões possuem configurações diferentes nos arquivos premakeNUM.lua
, ou seja, um premake4.lua
não é compatível com o premake5.lua
.
No Windows já há a versão 5 disponível para WinGet, basta rodar:
winget install --id=Premake.Premake.5.Beta -e
No entanto, nem todas as distros GNU/Linux possuem a versão mais recente nos repositórios, no Ubuntu, por exemplo, só há versão 4, exemplo de instalação:
sudo apt install premake4
Mas, você pode clonar, compilar e instalar direto do código fonte:
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
O procedimento para utilizar o Premake pode diferir dependendo da versão. Exemplo de criação de projeto com Premake4:
mkdir -p MeuProjeto/src
cd MeuProjeto
vim src/main.cpp # Hello, World!
Crie o arquivo para o Premake4, ex.: vim premake4.lua
solution "MeuProjeto"
configurations { "Debug", "Release" }
project "MeuApp"
language "C++"
kind "ConsoleApp"
location "build"
files { "src/**.cpp", "include/**.hpp" }
includedirs { "include" }
configuration "Debug"
targetdir "bin/Debug"
configuration "Release"
targetdir "bin/Release"
Agora gere com o comando:
premake4 gmake # Unix
E depois é só compilar e rodar:
make
./bin/Debug/MeuApp
Crie um arquivo de nome: premake5.lua
e inclua o código abaixo
Exemplo básico:
workspace "MeuProjeto"
configurations { "Debug", "Release" }
language "C++"
location "build"
project "MeuApp"
kind "ConsoleApp"
files { "src/**.cpp", "include/**.h" }
includedirs { "include" }
targetdir "bin/%{cfg.buildcfg}"
Gerar arquivos para uma IDE
premake5 vs2022 # Visual Studio 2022
premake5 gmake2 # Makefiles para Linux
premake5 xcode4 # Xcode
Compilar
.sln
e compile.premake5 gmake2
cd build
make config=release
Para mais informações acesse os links abaixo e o help:
premake5 --help
compiladores gcc visualstudio cmake make