Cheerp é um compilador C/C++ de código aberto, com licença permissiva e de nível empresarial para aplicativos da Web. Permite compilar praticamente qualquer código C/C++ para WebAssembly e JavaScript.
Ele é baseado e integrado à infraestrutura LLVM/Clang, e apresentando várias etapas de otimização personalizadas para maximizar o desempenho e minimizar o tamanho da saída de JavaScript/WebAssembly compilada.
O Cheerp é usado principalmente para portar bibliotecas e aplicativos C/C++ existentes para HTML5, mas também pode ser usado para escrever aplicativos Web de alto desempenho e componentes WebAssembly do zero.
Existem binários prontos para Windows, Ubuntu/Debian e macOS.
Para Windows você pode fazer o download da versão mais recente na página de releases e executar o arquivo https://github.com/leaningtech/cheerp-meta/releases/download/cheerp-3.0/Cheerp-3.0-Windows.exe
;
Para Debian e Ubuntu basta adicionar o repositório e instalar via APT:
# Adicione a seguinte linha a /etc/apt/sources.list
deb http://ppa.launchpad.net/leaningtech-dev/cheerp-ppa/ubuntu focal main
# E importe a chave para apt com o comando
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 84540D4B9BF457D5
sudo apt update
# Depois é só instalar
sudo apt install cheerp-core
https://github.com/leaningtech/cheerp-meta/releases/download/cheerp-3.0/cheerp-macosx-3.0.dmg
;Para construir do zero basta seguir as instruções nesse link.
Um Hello, World!
básico seria:
#include <cheerp/clientlib.h>
void webMain(){
client::console.log("Hello, World Wide Web!");
}
Compilar com o comando:
/opt/cheerp/bin/clang++ -target cheerp hello.cpp -o hello.js
E rodar com Node.js:
nodejs hello.js
Você também pode utilizar seu próprio arquivo index.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Cheerp example 0: hello</title>
<script defer src="hello.js"></script>
</head>
<body>
<h1 id="pagetitle">Open the console log
(Ctrl + Shift + J or Ctrl + Option + J)
to read the output</h1>
</body>
</html>
Lembrando que alguns navegador não rodarão em ~
file:///
~, mas você pode usar opython3 -m http.server
e em seguida abrir o arquivo.
Para mais informações consulte os links:
cpp linguagemc web webassembly