Compiler Poppler pour Qt5.8 sous MacOS Sierra

La librairie Poppler, et plus particulièrement poppler-qt5  permet d’afficher des pdf lorsqu’on utilise la bibliothèque graphique Qt5. Elle s’avère cependant un brin technique à compiler sous Mac (alors que sous linux, elle existe dans les packages de la plupart des distributions). Les opérations suivantes ont été effectuées sous Mac OSX 10.10 Yosemite MacOS 10.12 Sierra.

Préparation

  • Installer pkg-config. Cela peut se faire en compilant les sources, ou en utilisant un binaire précompilé disponible par exemple ici.
  • Mettre à jour le chemin de pkg-config et ajouter le binaire au PATH, en ajoutant ces lignes au fichier ~/.bash_profile :
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export PATH=$PATH:/opt/pkgconfig/bin
./configure
make
sudo make install
./configure
make
sudo make install
  • Compiler et installer Openjpeg

C’est un peu  pénible si on veut compiler des sources (utilisation de CMake…). Mais on trouve une archive contenant tout ce qu’il faut déjà compilé pour Mac OS X sur cette page.
Il faut récupérer l’archive contenant Darwin : récemment il s’agissait de openjpeg-2.1.0-Darwin-i386.tar.gz. Il faut maintenant la décompresser et aller tout mettre dans les bons répertoires :

tar xvzf openjpeg-2.1.0-Darwin-i386.tar.gz
cd openjpeg-2.1.0-Darwin-i386
sudo cp -R * /usr/local/
  • Installer (si ce n’est pas déjà fait) Qt5. On suppose que l’installation (ici de la version 5.4 5.8) est faite dans : /Users/gwenael/Qt5.8.0 (à adapter à votre installation évidemment).
  • Ajouter le chemin des exécutables au PATH en ajoutant ces lignes au fichier ~/.bash_profile :
export PATH=$PATH:/Users/gwenael/Qt5.8.0/5.8/clang_64/bin
  • Quitter le Terminal et le relancer pour que les modifications soient prises en compte.
  • Pour que Poppler trouve les headers de Qt5 (qui sont dans des répertoires .framework), après de nombreuses tentatives je n’ai pas trouvé d’autre moyen que de créer des liens symboliques dans le répertoire include de Qt :
cd /Users/gwenael/Qt5.8.0/5.8/clang_64/include
ln -s ../lib/QtCore.framework/Versions/5/Headers/ QtCore
ln -s ../lib/QtGui.framework/Versions/5/Headers/ QtGui
ln -s ../lib/QtXml.framework/Versions/5/Headers/ QtXml
ln -s ../lib/QtWidgets.framework/Versions/5/Headers/ QtWidgets
ln -s ../lib/QtTest.framework/Versions/5/Headers/ QtTest

Installation

  • Télécharger les sources de Poppler. Décompresser le fichier et se rendre dans le répertoire créé.
  • Pour une raison inconnue, un fichier source posait problème, le compilateur ne réussissant pas trouver des fichiers d’en-tête. Il s’agit du fichier : qt5/tests/test-render-to-file.cpp dans lequel il faut remplacer au début :
#include <QtCore/QDebug>
#include <QtCore/QFile>
#include <QGuiApplication>
#include <QImage>

par

#include <QtCore/QDebug>
#include <QtCore/QFile>
#include <QtGui/QGuiApplication>
#include <QtGui/QImage>
  • Lancer les commandes suivantes avant la configuration de poppler (ou mieux, copier ces lignes dans le fichier ~/.bash_profile pour  ne pas avoir à recommencer une prochaine fois) :
export QTDIR="/Users/gwenael/Qt5.8.0/5.8/clang_64"
export POPPLER_QT5_CFLAGS=-I$QTDIR/include
export POPPLER_QT5_CXXFLAGS=-I$QTDIR/include
export POPPLER_QT5_TEST_CFLAGS=-I$QTDIR/include
export POPPLER_QT5_LIBS="-F$QTDIR/lib -framework QtCore -framework QtGui -framework QtXml -framework QtWidgets"
export POPPLER_QT5_TEST_LIBS="-F$QTDIR/lib -framework QtCore -framework QtGui -framework QtXml -framework QtWidget
  • Mise à jour février 2017 : avec la version 0.51 de Poppler et 5.8 de Qt5, j’ai été obligé de préciser avant la configuration de Poppler :
export CXXFLAGS=-std=c++11
  • On peut alors lancer la configuration :
./configure --enable-poppler-qt5

Bien vérifier qu’à la fin de la configuration la ligne suivante soit présente :

qt5 wrapper :        yes
  • Le lancement direct de make pose problème : le compilateur installé par XCode ne reconnaissant pas un des arguments de compilation du Makefile. Solution un peu violente : supprimer l’argument en question directement dans le Makefile :
find . -name "Makefile" | xargs -L 1 perl -pi -e 's/-fno-check-new//g'

Attention : à réitérer après chaque lancement de configure si vous faites plusieurs essais.

      • On peut alors enfin lancer :
make
sudo make install

 Utilisation

La librairie poppler (avec poppler-qt5) est alors installée sur le système. Pour l’utiliser dans un programme C++ utilisant Qt5, ajouter dans le fichier  .pro :

INCLUDEPATH += /usr/local/include/poppler/qt5
LIBS += -L/usr/local/lib/ -lpoppler-qt5

Et ajouter dans le fichier source utilisant la librairie :

include <poppler-qt5>

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

7 commentaires sur “Compiler Poppler pour Qt5.8 sous MacOS Sierra”