{"id":8,"date":"2017-02-01T16:51:17","date_gmt":"2017-02-01T16:51:17","guid":{"rendered":"https:\/\/www.freebyte.fr\/?p=8"},"modified":"2017-02-01T19:33:28","modified_gmt":"2017-02-01T19:33:28","slug":"compiler-poppler-pour-qt5-sous-mac-osx","status":"publish","type":"post","link":"https:\/\/www.freebyte.fr\/?p=8","title":{"rendered":"Compiler Poppler pour Qt5.8 sous MacOS Sierra"},"content":{"rendered":"<p>La librairie Poppler, et plus particuli\u00e8rement poppler-qt5 \u00a0permet d&rsquo;afficher des pdf lorsqu&rsquo;on utilise la biblioth\u00e8que graphique Qt5. Elle s&rsquo;av\u00e8re cependant un brin technique \u00e0 compiler sous Mac (alors que sous linux, elle existe dans les packages de la plupart des distributions). Les op\u00e9rations suivantes ont \u00e9t\u00e9 effectu\u00e9es sous <del>Mac OSX 10.10 Yosemite<\/del> MacOS 10.12 Sierra.<\/p>\n<div>\n<h3>Pr\u00e9paration<\/h3>\n<ul>\n<li>Installer pkg-config. Cela peut se faire en compilant les sources, ou en utilisant un binaire pr\u00e9compil\u00e9 disponible par exemple <a href=\"http:\/\/sourceforge.net\/projects\/macpkg\/files\/PkgConfig\/0.26\/PkgConfig.pkg\/download\">ici<\/a>.<\/li>\n<li>Mettre \u00e0 jour le chemin de pkg-config et ajouter le binaire au PATH, en ajoutant ces lignes au fichier ~\/.bash_profile :<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">export PKG_CONFIG_PATH=\/usr\/local\/lib\/pkgconfig\r\nexport PATH=$PATH:\/opt\/pkgconfig\/bin<\/pre>\n<ul>\n<li>Compiler et installer <a href=\"http:\/\/download.savannah.gnu.org\/releases\/freetype\/\">Freetype2<\/a> :<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true \">.\/configure\r\nmake\r\nsudo make install\r\n<\/pre>\n<ul>\n<li>Compiler et installer <a href=\"http:\/\/www.freedesktop.org\/software\/fontconfig\/release\/\">Fontconfig<\/a><\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">.\/configure\r\nmake\r\nsudo make install<\/pre>\n<ul>\n<li>Compiler et installer Openjpeg<\/li>\n<\/ul>\n<p>C&rsquo;est un peu \u00a0p\u00e9nible si on veut compiler des sources (utilisation de CMake&#8230;). Mais on trouve une archive contenant tout ce qu&rsquo;il faut d\u00e9j\u00e0 compil\u00e9 pour Mac OS X sur <a href=\"http:\/\/www.openjpeg.org\/index.php?menu=download\">cette page<\/a>.<br \/>\nIl faut r\u00e9cup\u00e9rer l&rsquo;archive contenant <code>Darwin<\/code> : r\u00e9cemment il s&rsquo;agissait de\u00a0<a href=\"http:\/\/sourceforge.net\/projects\/openjpeg.mirror\/files\/2.1.0\/openjpeg-2.1.0-Darwin-i386.tar.gz\/download\">openjpeg-2.1.0-Darwin-i386.tar.gz<\/a>. Il faut maintenant la d\u00e9compresser et aller tout mettre dans les bons r\u00e9pertoires :<\/p>\n<pre class=\"lang:sh decode:true\">tar xvzf openjpeg-2.1.0-Darwin-i386.tar.gz\r\ncd openjpeg-2.1.0-Darwin-i386\r\nsudo cp -R * \/usr\/local\/<\/pre>\n<ul>\n<li>Installer (si ce n&rsquo;est pas d\u00e9j\u00e0 fait) <a href=\"http:\/\/www.qt.io\/download-open-source\/\">Qt5<\/a>. On suppose que l&rsquo;installation (ici de la version <del>5.4<\/del> 5.8) est faite dans :\u00a0\/Users\/gwenael\/Qt5.8.0 (\u00e0 adapter \u00e0 votre installation \u00e9videmment).<\/li>\n<\/ul>\n<ul>\n<li>Ajouter le chemin des ex\u00e9cutables au PATH\u00a0en ajoutant ces lignes au fichier ~\/.bash_profile :<\/li>\n<\/ul>\n<pre class=\"\">export PATH=$PATH:\/Users\/gwenael\/Qt5.8.0\/5.8\/clang_64\/bin<\/pre>\n<ul>\n<li>Quitter le Terminal et le relancer pour que les modifications soient prises en compte.<\/li>\n<li>Pour que Poppler trouve les headers de Qt5 (qui sont dans des r\u00e9pertoires <em>.framework<\/em>), apr\u00e8s de nombreuses tentatives je n&rsquo;ai pas trouv\u00e9 d&rsquo;autre moyen que de cr\u00e9er des liens symboliques dans le r\u00e9pertoire <em> include<\/em> de Qt :<\/li>\n<\/ul>\n<pre class=\"class=&quot;lang:sh\" decode:true=\"\">cd \/Users\/gwenael\/Qt5.8.0\/5.8\/clang_64\/include\r\nln -s ..\/lib\/QtCore.framework\/Versions\/5\/Headers\/ QtCore\r\nln -s ..\/lib\/QtGui.framework\/Versions\/5\/Headers\/ QtGui\r\nln -s ..\/lib\/QtXml.framework\/Versions\/5\/Headers\/ QtXml\r\nln -s ..\/lib\/QtWidgets.framework\/Versions\/5\/Headers\/ QtWidgets\r\nln -s ..\/lib\/QtTest.framework\/Versions\/5\/Headers\/ QtTest<\/pre>\n<h3>Installation<\/h3>\n<ul>\n<li>T\u00e9l\u00e9charger les sources de <a href=\"http:\/\/poppler.freedesktop.org\/\">Poppler<\/a>. D\u00e9compresser le fichier et se rendre dans le r\u00e9pertoire cr\u00e9\u00e9.<\/li>\n<li>Pour une raison inconnue, un fichier source posait probl\u00e8me, le compilateur ne r\u00e9ussissant pas trouver des fichiers d&rsquo;en-t\u00eate. Il s&rsquo;agit du fichier :\u00a0<em>qt5\/tests\/test-render-to-file.cpp<\/em> dans lequel il faut remplacer au d\u00e9but :<\/li>\n<\/ul>\n<pre class=\"theme:solarized-light decode-attributes:false lang:c++ decode:true \">#include &lt;QtCore\/QDebug&gt;\r\n#include &lt;QtCore\/QFile&gt;\r\n#include &lt;QGuiApplication&gt;\r\n#include &lt;QImage&gt;<\/pre>\n<p>par<\/p>\n<pre class=\"theme:solarized-light decode-attributes:false lang:c++ decode:true\">#include &lt;QtCore\/QDebug&gt;\r\n#include &lt;QtCore\/QFile&gt;\r\n#include &lt;QtGui\/QGuiApplication&gt;\r\n#include &lt;QtGui\/QImage&gt;\r\n<\/pre>\n<ul>\n<li>Lancer les commandes suivantes avant la configuration de poppler (ou mieux, copier ces lignes dans le fichier ~\/.bash_profile pour \u00a0ne pas avoir \u00e0 recommencer une prochaine fois) :<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">export QTDIR=\"\/Users\/gwenael\/Qt5.8.0\/5.8\/clang_64\"\r\nexport POPPLER_QT5_CFLAGS=-I$QTDIR\/include\r\nexport POPPLER_QT5_CXXFLAGS=-I$QTDIR\/include\r\nexport POPPLER_QT5_TEST_CFLAGS=-I$QTDIR\/include\r\nexport POPPLER_QT5_LIBS=\"-F$QTDIR\/lib -framework QtCore -framework QtGui -framework QtXml -framework QtWidgets\"\r\nexport POPPLER_QT5_TEST_LIBS=\"-F$QTDIR\/lib -framework QtCore -framework QtGui -framework QtXml -framework QtWidget\r\n<\/pre>\n<ul>\n<li><strong>Mise \u00e0 jour f\u00e9vrier 2017<\/strong> : avec la version 0.51 de Poppler et 5.8 de Qt5, j&rsquo;ai \u00e9t\u00e9 oblig\u00e9 de pr\u00e9ciser avant la configuration de Poppler :<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">export CXXFLAGS=-std=c++11\r\n<\/pre>\n<ul>\n<li>On peut alors lancer la configuration :<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">.\/configure --enable-poppler-qt5\r\n<\/pre>\n<p>Bien v\u00e9rifier\u00a0qu&rsquo;\u00e0 la fin de la configuration la ligne suivante soit pr\u00e9sente :<\/p>\n<pre class=\"lang:sh decode:true\">qt5 wrapper : \u00a0 \u00a0 \u00a0 \u00a0yes\r\n<\/pre>\n<ul>\n<li><del>Le lancement direct de <em>make<\/em> pose probl\u00e8me : le compilateur install\u00e9 par XCode ne reconnaissant pas un des arguments de compilation du <em>Makefile<\/em>. Solution un peu violente : supprimer l&rsquo;argument en question directement dans le <em>Makefile<\/em> :<\/del><\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">find . -name \"Makefile\" | xargs -L 1 perl -pi -e 's\/-fno-check-new\/\/g'\r\n<\/pre>\n<p><del>Attention : \u00e0 r\u00e9it\u00e9rer apr\u00e8s chaque lancement de <em>configure<\/em> si vous faites plusieurs essais.<\/del><\/p>\n<ul>\n<ul>\n<ul>\n<li>On peut alors enfin lancer :<\/li>\n<\/ul>\n<\/ul>\n<\/ul>\n<pre class=\"lang:sh decode:true\">make\r\nsudo make install\r\n<\/pre>\n<h3>\u00a0Utilisation<\/h3>\n<p>La librairie poppler (avec poppler-qt5) est alors install\u00e9e sur le syst\u00e8me. Pour l&rsquo;utiliser dans un programme C++ utilisant Qt5, ajouter dans le fichier \u00a0<em>.pro<\/em> :<\/p>\n<pre class=\"theme:solarized-light lang:c++\">INCLUDEPATH += \/usr\/local\/include\/poppler\/qt5\r\nLIBS += -L\/usr\/local\/lib\/ -lpoppler-qt5\r\n<\/pre>\n<p>Et ajouter dans le fichier source utilisant la librairie :<\/p>\n<pre class=\"theme:solarized-light decode-attributes:false lang:c++ decode:true \">include &lt;poppler-qt5&gt;\r\n<\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>La librairie Poppler, et plus particuli\u00e8rement poppler-qt5 \u00a0permet d&rsquo;afficher des pdf lorsqu&rsquo;on utilise la biblioth\u00e8que graphique Qt5. Elle s&rsquo;av\u00e8re cependant un brin technique \u00e0 compiler sous Mac (alors que sous linux, elle existe dans les packages de la plupart des distributions). Les op\u00e9rations suivantes ont \u00e9t\u00e9 effectu\u00e9es sous Mac OSX 10.10 Yosemite MacOS 10.12 Sierra. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,5],"tags":[],"class_list":{"0":"post-8","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-info","7":"category-qt","8":"czr-hentry"},"_links":{"self":[{"href":"https:\/\/www.freebyte.fr\/index.php?rest_route=\/wp\/v2\/posts\/8"}],"collection":[{"href":"https:\/\/www.freebyte.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.freebyte.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.freebyte.fr\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.freebyte.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8"}],"version-history":[{"count":11,"href":"https:\/\/www.freebyte.fr\/index.php?rest_route=\/wp\/v2\/posts\/8\/revisions"}],"predecessor-version":[{"id":70,"href":"https:\/\/www.freebyte.fr\/index.php?rest_route=\/wp\/v2\/posts\/8\/revisions\/70"}],"wp:attachment":[{"href":"https:\/\/www.freebyte.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.freebyte.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.freebyte.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}