Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ne pas preciser le chemin relatif dans les include

Parceque je trouve cela plus styler :p

Sujet résolu
Anonyme
    27 juin 2019 à 14:18:03

    Bonjour,
    Je suis un train de faire un petit programme et dans mon projet, j'ai un fichier "sources", un fichier "includes" et mon Makefile.
    Je programme de tel manière à ce que chaque fichier sources (.c) est sont header respectif (.h).
    J'aimerai tout simplement savoir comment faire pour ne pas devoir préciser dans mon include des fichiers source le chemin complet (relatif).
    ex:

    #include "includes/main.h"

    au lieu de

    #include "../includes/main.h"

    Forcement quand je compile (avec gcc) avec la première forme, il ne trouve pas le fichier...
    Comment faire pour compiler avec la première forme donc ?

    Merci d'avance ! :)

    -
    Edité par Anonyme 27 juin 2019 à 14:20:54

    • Partager sur Facebook
    • Partager sur Twitter
      27 juin 2019 à 14:21:44

      Bonjour,

      Je n'y connais rien en makefile, mais pourquoi tu ne mets pas tes .h dans le même dossier que ton main.c ?

      • Partager sur Facebook
      • Partager sur Twitter

      "Il faut toujours viser la lune, car même en cas d'échec on atterit dans les étoiles". -Oscar Wilde-

      Anonyme
        27 juin 2019 à 14:26:25

        C'est une solution mais, ça devient très vite un bordel monstrueux. Surtout que mes projets peuvent contenir beaucoup de fichier !
        (Perso je me perd vite)

        Après je demande pas un forcement Makefile entier, juste un manierre ou une option qui m'aurait échapper avec gcc qui permet de le faire.

        -
        Edité par Anonyme 27 juin 2019 à 14:29:05

        • Partager sur Facebook
        • Partager sur Twitter
          27 juin 2019 à 14:30:05

          Effectivement ça peut vite être le bordel ... En fait je m'en suisas rendu compte car je ne fais jamais de gros projets ...
          • Partager sur Facebook
          • Partager sur Twitter

          "Il faut toujours viser la lune, car même en cas d'échec on atterit dans les étoiles". -Oscar Wilde-

            27 juin 2019 à 14:58:28

            Une solution pourrait être de spécifier à gcc d'utiliser "includes" comme dossier privilégié pour chercher les include. Tu peux regarder du côté de l'option -I

            https://www.rapidtables.com/code/linux/gcc/gcc-i.html

            Je ne vois pas d'autres solution possible.. Sur 99% des projets que j'ai pu voir, les .h sont dans le même dossier que les .c - à part les headers qui ne correspondent à aucun fichier .c, en général ils vont être dans des dossiers spécifiques, et les include vont contenir le chemin complet relatif.

            -
            Edité par potterman28wxcv 27 juin 2019 à 15:01:12

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              27 juin 2019 à 15:23:53

              Merci à toi ça fonctionne super bien !

              Ainsi expliquer, c'est vraie que ça semble assez logique comme manierre d'organiser les fichiers finalement.
              Je vais essayer d'organiser les fichiers comme tu explique et voir si je trouve ça plus "fluide".
              Merci encore ! ^^
              • Partager sur Facebook
              • Partager sur Twitter
                27 juin 2019 à 15:27:51

                Pas de souci ! Je me demandais aussi : est-ce que tu as un intérêt à avoir un "main.h" ?

                L'utilité d'un .h est d'y mettre des définitions de façon à ce que le programmeur voulant utiliser le module en question ait juste à lire le .h pour savoir comment utiliser les fonctions, au lieu de se farcir le .c complet. Mais dans le cas du main.c, qui ne contient normalement aucune fonction appelable de l'extérieur par convention, quel est l'intérêt de se faire un "main.h" ? Si t'as des structures/prototypes propres à ton main, tu pourrais les mettre dans le .c et ça continuerait de marcher.

                En général dans le .c on met tout ce qui est "interne", c'est à dire tout ce que les autres modules n'ont pas besion de voir - et dans le .h au contraire on met toutes les définitions nécessaires pour que les autres modules puissent utiliser le module en question.

                -
                Edité par potterman28wxcv 27 juin 2019 à 15:29:06

                • Partager sur Facebook
                • Partager sur Twitter

                Ne pas preciser le chemin relatif dans les include

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown