2011-07-30 40 views
11

En mi proyecto actual, he separado mis archivos de clase y mis archivos de encabezado. Mi estructura del proyecto actualmente se ve así:¿Cómo incluir un archivo de otra carpeta?

  • Proyecto

    • Fuente
      • src
        • class1.cpp
        • class2.cpp
      • main.cpp
    • Header
      • incluyen
        • class1.h
        • class2.h

Mi problema es que no sé cómo incluir los archivos de encabezado en los archivos de clase. ¿No puedo enlazar con encabezados que no están en el mismo nivel o en una carpeta secundaria? ¿O hay alguna forma de ir desde la raíz del proyecto y seguir mi camino hacia abajo? Por ejemplo:
#include "Project/Headers/include/class1.h" dentro del archivo class1.cpp

+0

Probablemente significaba '# include' en lugar de' include'. Corregido por esto –

Respuesta

15

Es necesario indicar la ruta de inclusión <the directory containing Project> a su compilador para que el compilador es capaz de encontrar las cabeceras incluidos. Usando gcc, puede usar la opción -I, y usando Visual Studio, puede usar /I.

14

Suponiendo que desea incluir class1.cpp class1.h que haría algo como esto

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

El .. cuenta la dice al sistema operativo para saltar 1 directorio cuando el compilador pide el archivo.

+4

El .. no le dice nada al compilador. Le dice al sistema operativo que salte 1 directorio cuando el compilador solicita el archivo. – Dani

+0

@Dani Bueno, el mismo efecto ... lo edité de todos modos ... – Pepe

+1

Es una mala práctica usar ".." y "." cuando incluye archivos de encabezado – mmohaveri

0

Tuve un problema muy similar donde mi compilador no pudo encontrar el encabezado con un código :: bloquea el proyecto C++ (misma estructura de archivo que OP).

Esto funcionó para mí:

#include "../include/class1.h" 
Cuestiones relacionadas