Tarnyko's website
Tarnyko's website
about

[Tutoriel] Utiliser Chromium comme un toolkit avec Chromium-Lite

2014-10-29

Objectif : compiler de petits programmes C++ avec les bibliothèques Chromium.

chromium

Chromium est la base open source du très connu navigateur Google Chrome.

Multi-plateforme, riche en fonctionnalités et écrit majoritairement en C++, il sert également de base à Chromium OS, un système d'exploitation complet (que Google distribue également sous le nom "Chrome OS" afin d'équiper ses Chromebooks).

Il paraît donc évident que Chromium intègre tout le nécessaire pour afficher des fenêtres, jouer des fichiers multimédia, gérer des fichiers, le multi-threading et l'internationalisation...

Et comme la vie est bien faite, il est organisé en multiple bibliothèques et "tierces parties" :

Sachant cela, pourquoi ne pas se server de Chromium comme d'une boîte à outils C++, ainsi qu'on le fait déjà avec Qt par exemple ?

On peut lister au moins deux raisons à cela :

Mais comme vous le savez, je travaille depuis un certain temps sur Chromium-Lite !
(un découpage du navigateur en bibliothèques, liées tant que possible avec celles du système d'exploitation 😉)


1) Installer Chromium 38.0.2067.0 "composant" (Ubuntu 14.04 LTS)

Télécharger selon :

Extraire l'archive sur votre ordinateur :

sudo mkdir /opt/chromium
sudo tar xfvj chromium-38.0.2067.0-*UBUNTU14*.tar.bz2 -C /opt/chromium/

Cela créera 3 nouveaux répertoires dans /opt/chromium/ : bin/ - include/ - lib/.

2) Tester la naviguation web [optionnel]

Cette version de Chromium a été compilée avec Ozone-Wayland, un backend destiné à l'affichage :

  1. sous un compositeur Wayland ;
  2. avec accélération OpenGL ES 2 ("libGLESv2.so.2" doit être présente, et le rendu logiciel n'est pas encore supporté).

Si vous satisfaisez déjà à la condition 2., la 1. nécessite encore p.ex. de compiler et installer le compositeur Weston...
En 32-bits, je vous ai précompilé une version qu'il vous suffira de télécharger :

puis extraire et lancer :

sudo tar xfvj wayland170-UBUNTU14.tar.bz2 -C /opt/
/opt/wayland170/bin/weston &

Voici ensuite comment lancer le navigateur :

export XDG_RUNTIME_DIR=/run/user/$UID
/opt/chromium/lib/chromium/content_shell --no-sandbox https://iot.bzh

chromium-lite Chromium-Lite sous Wayland

Si vous n'avez pas une installation compatible, ne craignez rien : nos exemples resteront pour l'instant en ligne de commande et n'en auront pas besoin 😉.

3) Compiler et exécuter les exemples de code

Veuillez télécharger les exemples C++ Chromium.

Vous aurez besoin du compilateur G++ :

sudo apt-get install g++

Par la suite, la commande de compilation sera systématiquement :

g++ -std=c++11 $SOURCE.cc -I/opt/chromium/include/chromium /opt/chromium/lib/chromium/lib/libbase.so

Exemples :

LOG(INFO) << "My log message";
auto filepath = base::FilePath ("test.txt");
auto dirpath = base::FilePath ("/home/bob");
base::CopyFile (filepath, dirpath);
base::DeleteFile (filepath);
auto cmdline = base::CommandLine (argc, argv);

if (cmdline.HasSwitch ("help") && cmdline.GetArgs().empty()) {
  // print help text
}   
base::Callback<void(void)> callback = base::Bind (&my_func);
callback.Run ();
base::Callback<void(void)> callback_delayed = base::Bind (&my_func);

auto duration = base::TimeDelta::FromSeconds (10);
main_loop.PostDelayedTask (FROM_HERE, callback_delayed, duration);

Voilà, c'est tout pour l'instant !