COMPILE para C/C++ com XMAKE baseado em LUA

Tem suporte para arquiteturas: x86 64 e 32-bit, arm64, cross-toolchains: RUST, GOLANG, ZIG e entre outros.


COMPILE para C/C++ com XMAKE baseado em LUA

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.

ASSISTA O VÍDEO


Comandos e links

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

Instalação

Somente para seu usuário:

bash <(curl -fsSL https://xmake.io/shget.text)
bash <(wget https://xmake.io/shget.text -O -)

  • PowerShell
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

1. Compilação básica do zero

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

2. Compilação básica AUTOMÁTICA

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

3. Compilando vários arquivos

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 e xmake run


4.1 Compilando para Ncurses

mkdir janelas && cd janelas Vamos utilizar o exemplo desse link: https://terminalroot.com.br/ncurses/#8-janelas . O xmake.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")

4.2 Compilando para Gtkmm

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:

https://github.com/terroo/pass-firefox

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
  • Imagens

Use, exemplos:

add_installfiles("src/*.h")
add_installfiles("doc/*.md")

5. Compilando para Rust

pub fn main() {
    println!("Compilando Rust com xmake!!!");
}
target("bin-rust")
  set_kind("binary")
  add_files("./main.rs")
xmake
xmake run <TAB>

6. Criar um template para o Doxygen

cd janelas
xmake doxygen

7. Compilando para iPhone

xmake create iphone
xmake config -p iphoneos

8. Rodando Lua

Via linha de comando:

xmake lua -c "print('Olá, Lua via xmake')"

Executando em uma subshell:

xmake lua
print(89 + 11)
os.exit()

9. Utilizando menu

xmake config --menu

10. Obtendo mais informações de comandos

xmake<TAB>` e `xmake --<TAB>
xmake --help

cpp lua cppdaily linguagemc rust go zig gtkmm ncurses


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!