web-dev-qa-db-fra.com

Comment inclure un fichier d'un autre dossier?

Dans mon projet actuel, j'ai séparé mes fichiers de classe et mes fichiers d'en-tête. Ma structure de projet ressemble actuellement à ceci:

  • Projet

    • La source
      • src
        • class1.cpp
        • class2.cpp
      • main.cpp
    • Entête
      • comprendre
        • class1.h
        • class2.h

Mon problème est que je ne sais pas comment inclure les fichiers d'en-tête dans les fichiers de classe. Suis-je incapable de créer un lien vers des en-têtes qui ne sont pas au même niveau ou dans un dossier enfant? Ou existe-t-il un moyen de partir de la racine du projet et de descendre? Par exemple:
#include "Project/Headers/include/class1.h" à l'intérieur du fichier class1.cpp

16
Sheldon Allen

En supposant que vous voulez que class1.cpp inclue class1.h, vous feriez quelque chose comme ça

#include "../../Header/class1.h"

Le .. indique au système d'exploitation de sauter 1 répertoire vers le haut lorsque le compilateur demande le fichier.

20
Pepe

Vous devez indiquer le chemin d'inclusion <the directory containing Project> à votre compilateur pour que le compilateur puisse trouver les en-têtes inclus. En utilisant gcc, vous pouvez utiliser -I option, et en utilisant visual studio, vous pouvez utiliser /I.

16
amit

J'ai eu un problème très similaire où mon compilateur n'a pas pu trouver l'en-tête avec un projet code :: blocks C++ (même structure de fichier que OP).

Cela a fonctionné pour moi:

#include "../include/class1.h"
1
lm5050