
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/#/sponsorSomente 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).ContentPara 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 ~/.bashrcmkdir meu-projeto
nvim main.cppCom 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:
xmakeRodar:
Os parâmetros autocompletam
xmake run hello-worldOu somente:
xmake run
Se você quiser instalar o binário basta rodar o comando:
sudo xmake installTambé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-worldPara desinstalar, basta rodar:
sudo xmake uninstallSe 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-projetoSe 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:
xmakeE agora em vez de instalarmos vamos gerar um Makefile para nosso projeto também de forma automática:
xmake projectTambé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 cmakePodemos 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/historyBasta criar o xmake.lua e adicionar os arquivos:
target("multiplo")
set_kind("binary")
add_files("main.cpp")
add_files("projeto.cpp")Depois é só rodar:
xmakeexmake run
mkdir janelas && cd janelasVamos utilizar o exemplo desse link: https://terminalroot.com.br/ncurses/#8-janelas . Oxmake.luaficará 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.desktopUse, 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 doxygenxmake create iphone
xmake config -p iphoneosVia linha de comando:
xmake lua -c "print('Olá, Lua via xmake')"Executando em uma subshell:
xmake luaprint(89 + 11)
os.exit()xmake config --menuxmake<TAB>` e `xmake --<TAB>
xmake --helpcpp lua cppdaily linguagemc rust go zig gtkmm ncurses