Já faz um bom tempo que falei sobre o Premake, prometendo dar continuidade ao assunto. Em especial disse que iria falar sobre como compilar bibliotecas e arquivos não C. Pois bem, demorou, mas aqui vai. O principal motivo de ter demorado é que não usei muito a ferramenta ultimamente, não estive compilando muita coisa. E também porque não encontrei nenhuma forma prática de "compilar" arquivos não C. Por exemplo, documentação que use alguma ferramenta de conversão de formato.
Como o Premake usa linguagem Lua, você pode usar os.execute()
para chamar programas externos. Mas nada como as regras de sufixo dos makefiles que nos permitem dizer para processar um arquivo somente se ele sofreu alterações desde a última vez que foi processado.
Se necessário, primeiro dê uma revisada no artigo anterior, que mostra o básico. Para compilar programas que usam bibliotecas estáticas não precisamos de muitas novidades:
hello.c:
libhello.c:
libhello.h:
premake4.lua:
Veja que temos 2 project. Um do tipo ConsoleApp e outro do tipo StaticLib. O projeto hello
ConsoleApp é ligado (links) ao projeto libhello
StaticLib. Mas, observe que ao limpar os arquivos com o comando premake4 clean
, por algum motivo que não sei qual fica sobrando um subdiretório chamado obj
. Então vou acrescentar ao arquivo premake4.lua
uma customização da ação clean - o que já vai como exemplo de como customizar as ações:
O processo é praticamente o mesmo, só o tipo do projeto será SharedLib. Mas nesse caso o Premake além de deixar o já citado subdiretório obj também deixa versões estáticas das bibliotecas, então vou acrescentar alguns comandos a mais para remover esses arquivos também na ação clean.
Os arquivos hello.c
, libhello.c
e libhello.h
serão exatamente os mesmos, então nem vou repetir eles aqui. Vai só o premake4.lua
já completo (com acréscimos na ação clean):
premake4.lua:
Bom... é isso pessoal, numa próxima falo sobre criar novas ações. Como da outra vez, o arquivo com os exemplos e o Premake, tudo o que você precisa para experimentar os exemplos.
br_lemes, o Imortal insano (Cleptomaniaco)
Theme by Breno Ramalho Lemes under Creative Commons Attribution, based on Jekyll Clean by Scott Emmons and icons by FatCow.