IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

[Windows]Compiler une application utilisant gtk avec msys et mingw


Sujet :

GTK+ avec C & C++

  1. #1
    Candidat au Club
    Profil pro
    Développeur
    Inscrit en
    Juin 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [Windows]Compiler une application utilisant gtk avec msys et mingw
    Bonjour,

    Je relance ce sujet pour lequel je n'ai pas trouvé de solution qui me semble assez complète.

    Mon problème est que j'ai des portions de code que je dois compiler de cette façon et tant qu'à faire j'aimerais que toute l'application soit compilée dans cet environnement.

    J'avais déjà installé dans c:\GTK un runtime GTK pour tester pyGTK que j'ai récupéré via gladewin32.sourceforge.net.

    Pour compiler mon hello world en C/Gtk, je dois installer les packages DEV de GTK.

    J'ai trouvé un bundle all-in-one sur http://www.gtk.org/download-windows.html que j'ai décompressé dans c:\Gtk-dev

    J'ai modifié le fichier /etc/profile dans l'arborescence MSYS pour y ajouter les 2 lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    export PKG_CONFIG_PATH=/c/Gtk-dev/lib/pkgconfig
    export PATH="$PATH:/c/Gtk-dev/bin"
    J'ai créé un makefile pour compiler mon programme suivant le modèle extrait de la FAQ GTK http://library.gnome.org/devel/gtk-faq/stable/x426.html

    Malheureusement, j'ai une erreur de compilation sur le package pixman-1 requis par cairo .

    Effectivement, dans le package all-in-one le fichier c:\Gtk-dev\lib\pkgconfig\cairo.pc contient la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Requires.private: libpng13 pixman-1 >= 0.10.0
    or je ne vois pas dans les lib de pixman-1.lib dans cette arborescence.

    J'ai supprimé le contenu du répertoire c:\Gtk-dev

    J'ai donc voulu procéder à partir des package élémentaires de GTK. J'ai donc décompressé les 5 packages de base de GTK (version DEVelopper) :
    • GLib
    • GTK+
    • Pango
    • ATK
    • Cairo

    Dans le répertoire c:\Gtk-dev
    J'ai décompressé les 5 third party dependencies requis (version Binaire) dans le même répertoire (c:\Gtk-dev) :
    • zlib
    • gettext-runtime
    • libpng
    • libjpeg
    • libtiff

    Il a fallu :
    • que je déplace le fichier zlib1.dll de c:\Gtk-dev vers c:\Gtk-dev\bin
    • que je décompacte le third party pkg-config (version Binaire) dans c:\Gtk-dev

    Lorsque j'ai voulu compiler, j'ai eu une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ...ld.exe cannot find -lintl
    qui vient de c:\Gtk-dev\lib\pkgconfig\glib-2.0.pc où l'on a la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Libs: -L${libdir} -lglib-2.0 -lintl
    J'ai supprimé la directive -lintl puisque là aussi je n'avais pas de fichier intl.lib (qui se trouve par contre dans le package all-in-one).

    Mon hello world (http://library.gnome.org/devel/gtk-t...SEC-HELLOWORLD) compile et s'exécute

    Voilà si ça peut être utile à d'autres comme certain post m'ont également aidé.

    Par contre, je suis perturbée car les binaires installés avec le runtime (2.12.9) ne semblent pas les mêmes que ceux du bundle (2.12.9 également) : par exemple dans le premier on a libpng12.dll, dans le second libpng13.dll. Je crains de faire un mélange sur ma machine ou que ma procédure ne soit pas bonne.

    Si quelqu'un a des éclaircissements sur le sujet, ainsi que sur la librairie intl.lib que j'ai enlevée de glib-2.0.pc cela m'intéresserait.

    Merci

  2. #2
    Candidat au Club
    Profil pro
    Développeur
    Inscrit en
    Juin 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Rectification
    En fait, il faut décompresser les versions Binaires ET DEVelopper des Third Party dependencies.

    intl.lib correspond au Package gettext-runtime, il n'est fourni que dans le package DEVelopper

    Inversement, si on ne décompresse que les version DEVelopper des Third Party dependencies, ça ne compile pas non plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Package libpng13 was not found in the pkg-config search path
    Perhaps you should add the directory containing 'libpng13.pc' to the PKG_CONFIG_PATH environment variable
    En fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    /bin/libpng13.dll
    /lib/pkgconfig/libpng13.pc
    se trouvent dans le package Binaire de libpng !

    Et de cette façon, j'ai pu compiler mes exemples sans toucher aux fichiers distribués.

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,

    J'ai fait un article sur ce sujet : Développez et déployez une application GTK+ sous Windows.

    J'utilise Code:Blocks donc je n'ai pas de problème avec pkg-config.

    Merci pour ces explications

    Tu as encore des problèmes ou tout fonctionne ?

  4. #4
    Candidat au Club
    Profil pro
    Développeur
    Inscrit en
    Juin 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Effectivement, j'ai écrit beaucoup de choses pour dire ce que tu précises en quelques lignes.

    J'ai commencé hier et comme j'envisage de récupérer une partie de code qui doit être compilée via un shell linux, c'est pour cette raison que je n'utilise pas code::blocks qui est par ailleurs installé sur ma machine.

    J'ai bookmarqué ton tutoriel parce que j'envisage d'utiliser innosetup.

    La compilation de programmes basiques marche

    Ce qui me perturbait, ce sont des modes opératoires parfois différents que j'ai trouvé lors de mes recherches sur le NET :
    • Dans ton tutoriel, tu préconises de tout décompresser dans le répertoire de MinGW
    • Dans un autre tutoriel GTK, l'auteur imposait d'installer le runtime GTK dans le répertoire système Windows, ce que je n'estime pas nécessaire (chez moi le runtime était dans c:\GTK et ça marche)
    • Dans la mailing list gtk-list@gnome.org, j'ai trouvé un post indiquant de décompresser les packages dans le répertoire du runtime (ce qui me posait problème c'était les versions de binaires différentes entre les deux, mon 1er message)


    Du coup j'ai voulu partir des packages et les mettre dans un répertoire non système, indépendant du compilateur et du runtime pour voir. En décompressant binaires et version développement dans un même répertoire (c:\Gtk-dev), cela a fonctionné.

    J'ai une question qui est peut-être bête : ayant décompressé les binaires des différents packages (dans c:\Gtk-dev), ai-je toujours besoin de mon répertoire runtime initial (dans c:\Gtk) ?

    Merci

Discussions similaires

  1. Compiler une application utilisant GTK+ avec MinGW
    Par lilivounet dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 19/06/2009, 14h42
  2. [Windows]Compiler une application utilisant gtk avec msys et mingw
    Par lilivounet dans le forum GTK+ avec C & C++
    Réponses: 18
    Dernier message: 26/04/2009, 20h24
  3. Quels API's utiliser pour une application en rapport avec Autocad?
    Par Angelsoul dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 31/07/2008, 15h21
  4. compiler une application c++ avec ses librairies
    Par elekis dans le forum Linux
    Réponses: 2
    Dernier message: 08/08/2007, 20h19
  5. [Compiler] Compiler une application avec plusieurs fichiers m
    Par ploukinet dans le forum MATLAB
    Réponses: 3
    Dernier message: 10/05/2007, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo