• # Re: un peu de pub !

    Posté par (Mastodon) . En réponse au journal un peu de pub !. Évalué à 10.

    Je viens de tester, ça marche bien, même si cela ne permet que de jouer à deux. Si tu as besoin d'une source d'inspiration, tu peux regarder du côté du logiciel eboard (je pense surtout pour la récupération de ses très jolis thèmes :-)

    Une question: pourquoi nommes-tu tes fichiers .cc au lieu de .c ? (Aucune importance, mais la convention c'est .c pour le C, et je crois .cc pour le C++)

    Sinon, quelques remarques sur le code: c'est assez violent de faire un include de tous tes fichiers dans main.cc. Ça t'oblige à compiler l'intégralité du code à chaque fois, même si tu n'as changé qu'un seul fichier.

    La bonne méthode, c'est de compiler chaque fichier séparément, avec quelque chose comme:

    gcc -c lefichier.c

    Ce qui te donne un fichier "lefichier.o".

    Une fois que tu as tous tes fichiers .o, tu peux les réunir ensemble en faisant

    gcc *.o -o nom_programme

    Comme ça, si tu ne changes qu'un seul fichier, tu n'as besoin de recompiler que ce fichier.

    C'est l'intérêt d'un Makefile, car il faiit toutes ces opérations tout seul. Un exemple de makefile:

    CC=gcc
    CFLAGS = -g -Wall `gtk-config --cflags`
    LDFLAGS = `gtk-config --libs`
    FILES=fichier1.o fichier2.o ...

    .c.o:
    $(CC) $(CFLAGS) -c $<

    all: $(FILES)
    $(CC) $(LDFLAGS) $(FILES) -o nom_du_programme

    clean:
    rm -f *.o nom_du_programme *core*

    Explication:
    CFLAGS, c'est les paramètres de compilation, LDFLAGS les paramètres de liaison (deux étapes séparées). `gtk-config blabla`, ça donne les paramètres nécessaires pour compiler avec GTK, ceux que tu places dans tes variables $(GTK) et $(GLIB). C'est mieux d'utiliser gtk-config, car c'est indépendant de la machine sur laquelle on compile.

    La règle .c.o, ça dit à Make que à chaque fois qu'il veut un fichier.o, il doit regarder si le fichier.c est plus récent. Si oui, il doit faire les actions précisées. Le parmaètre -c dit à gcc de compiler, sans lier.

    La règle all dépend de la liste de tes fichiers (dans $(FILE)), car ils doivent tous être compilés avant de faire la liaison.