Comment mettre à jour CMake?

cmake 21 mars 2021

Sur le développement d’Odamex, notre équipe de développement a du faire face à un problème assez surprenant: pour plusieurs personnes, la compilation du projet ne se faisait pas, à cause d’une librairie inexistante. Pourtant, cette librairie est interne dans le projet, et donc ce résultat ne devrait pas arriver.

En réalité, après quelques minutes de recherche, nous avions compris le problème. Odamex requiert CMake 3.9 pour compiler le projet à son strict minimum (client, launcher, masterserver)… Mais nous utilisons des fonctions qui proviennent de CMake 3.11 pour compiler l’application serveur. Oopsies.

En fait, sur ce que j’ai pu constater, la majorité de ces personnes qui ont eu ce problème ont Ubuntu 18.04, avec leur système pourtant à jour. Mais cette version d’Ubuntu n’est pas obsolète, pas vrai? Vous auriez raison, car selon ce graphique sur le site officiel d’Ubuntu, on remarque que cette version à encore 2 bonnes années devant lui.

Cependant, en regardant la version du paquet de CMake, il est pourtant en 3.10.2… Et sur le site officiel, nous sommes en version 3.19.7 (à l’écriture de ce ticket). Alors, pourquoi une telle différence de version?

Lorsque vous installez Ubuntu, vous avez surement du remarquer le « LTS » à côté du nom de version. Ce mot signifie « Long Term Support« , ce qui signifie que les applications installées seront plus des mises à jour de sécurité que de l’installation de nouvelles versions.

Cependant, Ubuntu n’est pas pour autant le seul coupable: les distributions Linux peuvent ne pas mettre automatiquement les derniers paquets, et si pour des besoins de test vous avez besoin de le mettre à jour à la toute dernière version pour X ou Y raison…

D’ailleurs, si vous louez un VPS…

N’installez PAS Ubuntu, mais Debian. Ubuntu est un OS principalement axé pour des clients, comme un OS de bureau. Debian est plus adapté pour les serveurs, et sera même légèrement plus léger au niveau des ressources. Mais vous faites ce que vous voulez. 😉

Bref, comment on met à jour CMake?

Il y a plusieurs façons de mettre à jour CMake. Suivez le guide!

En ajoutant le dépôt de Kitware (Ubuntu seulement)

Kitware semble être relativement conscient du problème pour les utilisateurs d’Ubuntu, et a crée un dépôt de paquets dédiée, accessible sur cette page. Il supporte à la fois les versions x86 et amd64, en précisant que la version 20.04 (et supérieur?) supporte aussi l’ARM.

L’installation est relativement facile à faire, la page en question vous guide avec les commandes à copier/coller (bien sur, en superuser) en fonction de votre version d’Ubuntu.

En utilisant snapd

Snap est un énième gestionnaire de paquets qui se veut être universel quelque soit la distribution Linux que vous utilisez. Ubuntu possède snapd par défaut. Voici les commandes à taper:

# On supprime la version de CMake existante.
sudo apt purge --auto-remove cmake

# On installe cmake à travers snapd
sudo snap install cmake --classic

# On rafraichit le profil, et les programmes en mémoire
source ~/.profile

En mettant à jour via pip

Choix surprenant mais toujours possible, pip permet de mettre à jour CMake, où plus d’infos sont données sur cette page. J’avoue ne l’avoir pas testé, mais ca marche apparemment bien selon ce que j’ai pu lire de gauche à droite:

sudo python -m pip install cmake

Compiler manuellement

Si tout ne marche pas, ou que ca ne donne pas la version que vous attendiez, vous devrez le recompiler manuellement. J’ai repris la réponse sur ce site d’askubuntu:

Première chose, on supprime le paquet cmake existant:

sudo apt purge --auto-remove cmake

Ensuite, téléchargeons la dernière version de CMake sur le site officiel:

version=3.19
build=7
mkdir ~/
cd ~/temp
wget https://cmake.org/files/v$version/cmake-$version.$build.tar.gz
tar -xzvf cmake-$version.$build.tar.gz
cd cmake-$version.$build/

Ensuite, on va compiler le tout:

./bootstrap
make -j$(nproc)
sudo make install

Enfin, on rafraichit nos variables d’environnement (voir en bas 🙂 )

source ~/.profile

Une fois fini…

Si vous ne l’avez toujours pas fait, rafraichissez vos variables d’environnement avec cette commande:

source ~/.profile

Ensuite, vérifiez avec cmake --version si votre version est bien plus récente que celle d’habitude. Enfin, refaites une génération de votre projet. Et ça devrait être bon! 🙂

Mots clés

Ch0wW

🌍 Entrez dans mon monde! Je poste du contenu en rapport avec les jeux retro, l'informatique, le modding et la réparation d'appareils... N'hésitez pas à me contacter pour toute question ou demande!