xmake é uma ferramenta para construção de binário para linguagens C e C++ com arquivos de configuração criados com a linguagem de programação Lua. Tem suporte para arquiteturas: x86 64 e 32-bit, arm64, cross-toolchains: Rust, Golang, Zig e entre outros.
Nesse vídeo vamos obter informações mais detalhadas sobre o xmake, como instalar o xmake, além de 10 exemplos de utilização: formas de compilar para C/C++. Compilamos também para Rust, exibimos as formas de gerar ferramentas de compilação para o iPhoneOS . Dicas de configuração para compilar com as bibliotecas: NCURSES e GTKMM, como gerar Doxygen com xmake, como utilizar um menu interativo, além de outras dicas.
xmake, A cross-platform build utility based on Lua.
Copyright (C) 2015-present Ruki Wang, tboox.org, xmake.io
_
__ ___ __ __ __ _| | ______
\ \/ / | \/ |/ _ | |/ / __ \
> < | \__/ | /_| | < ___/
/_/\_\_|_| |_|\__ \|_|\_\____|
by ruki, xmake.io
👉 Manual: https://xmake.io/#/getting_started
🙏 Donate: https://xmake.io/#/sponsor
Somente para seu usuário:
- Via cURL
bash <(curl -fsSL https://xmake.io/shget.text)
bash <(wget https://xmake.io/shget.text -O -)
Invoke-Expression (Invoke-Webrequest 'https://xmake.io/psget.text' -UseBasicParsing).Content
Para todos usuários do seu sistema: Dependências:
git clone --recursive https://github.com/xmake-io/xmake
cd xmake
make build
sudo make install
./scripts/get.sh __local__ __install_only__
rm ~/.local/bin/xmake
cd ..
rm -rf xmake
source ~/.bashrc
mkdir meu-projeto
nvim main.cpp
Com o seguinte conteúdo:
#include <iostream>
int main(){
std::cout << "Olá, xmake!" << '\n';
return 0;
}
Agora vamos criar o arquivo de configuração do xmake do tipo Lua: nvim xmake.lua
e dentro dele vamos preencher da seguinte forma:
target("hello-world")
set_kind("binary")
add_files("./main.cpp")
Compilar:
xmake
Rodar:
Os parâmetros autocompletam
xmake run hello-world
Ou somente:
xmake run
Se você quiser instalar o binário basta rodar o comando:
sudo xmake install
Também autocompleta.
O binário será copiado para o diretório padrão: /usr/local/bin
.
E então basta rodar o binário:
hello-world
Para desinstalar, basta rodar:
sudo xmake uninstall
Se você achar trabalhoso em criar os arquivos do projeto na mão, também há opção de você entregar todo esse trabalho para o xmake
.
xmake create meu-projeto
Se você não informar o nome, mas tiver dentro do diretório de nome do seu projeto, será criado automaticamente um subdiretório de mesmo nome.
Agora vamos entrar no diretório e perceba que já está tudo pronto, se quiser abra os arquivos para ver o conteúdo.
Então vamos construir:
xmake
E agora em vez de instalarmos vamos gerar um Makefile para nosso projeto também de forma automática:
xmake project
Também podemos gerar arquivos de configuração para outras ferramentas de platforma cruzada como ninja e cmake, por exemplo criando um CMakeLists.txt
:
xmake project -k cmake
Podemos rodar o make clean
e em seguida somente o make para construir: make
. Se rodarmos xmake package
irá gerar um pacote do nosso binário e a partir daqui podemos também consultar o histório de comandos, por exemplo, se rodar xmake show
irá exibir os dados do nosso projeto e em seguida podemos consultar o histórico de comandos rodados:
cat .xmake/linux/x86_64/cache/history
Basta criar o xmake.lua
e adicionar os arquivos:
target("multiplo")
set_kind("binary")
add_files("main.cpp")
add_files("projeto.cpp")
Depois é só rodar:
xmake
exmake run
mkdir janelas && cd janelas
Vamos utilizar o exemplo desse link: https://terminalroot.com.br/ncurses/#8-janelas . Oxmake.lua
ficará assim:
add_rules("mode.debug", "mode.release")
add_requires("ncurses")
target("janela")
add_packages("ncurses", {links = "ncurses"})
add_ldflags("-ltinfo", {force = true})
set_kind("binary")
add_files("main.cpp")
De acordo com a série que fizemos do Gtkmm, eu atualizei repositório e o README, ou seja, basta ir lá, ler o README e ver o arquivo: xmake.lua
:
O arquivo xmake.lua desse repositório corresponde ao Makefile
(que nós criamos nos vídeos da série do Gtkmm):
Se precisar instalar arquivos como
.md
.desktop
Use, exemplos:
add_installfiles("src/*.h")
add_installfiles("doc/*.md")
pub fn main() {
println!("Compilando Rust com xmake!!!");
}
target("bin-rust")
set_kind("binary")
add_files("./main.rs")
xmake
xmake run <TAB>
cd janelas
xmake doxygen
xmake create iphone
xmake config -p iphoneos
Via linha de comando:
xmake lua -c "print('Olá, Lua via xmake')"
Executando em uma subshell:
xmake lua
print(89 + 11)
os.exit()
xmake config --menu
xmake<TAB>` e `xmake --<TAB>
xmake --help
cpp lua cppdaily linguagemc rust go zig gtkmm ncurses