visual una studio solucion renombrar que proyectos proyecto nombre hechos cambiar c++ visual-studio visual-studio-2005 include

c++ - una - ¿Cómo incluir subdirectorios en Visual Studio?



renombrar proyecto visual studio 2015 (4)

Tengo que incluir muchos archivos de encabezado, que están en diferentes subdirectorios. ¿Hay alguna manera en Visual Studio (estoy usando 2005 edición) para establecer una ruta de acceso que incluya que Visual Studio buscará también los subdirectorios para los archivos de encabezado?


Creo que el uso de la búsqueda recursiva de archivos incluidos causaría muchos más problemas de los que resuelve en forma de archivos incorrectos o versiones incorrectas incluidas. Después de todo, debe definir los directorios correctos una vez cuando configure el proyecto.


No hemos encontrado una forma de establecer una búsqueda recursiva de carpetas en Visual Studio (aunque Xcode no tiene problemas para configurarlas y usarlas). Lo que hacemos es enumerar todos los directorios en un archivo y especificar el archivo en las opciones adicionales de la línea de comandos de C / C ++:

@ "IncludeFolders.rsp"

Rara vez encontramos problemas al usar la búsqueda recursiva, aunque una inclusión accidental de `` / '''' desalentó un poco las cosas.


Establecer las rutas de búsqueda de carpetas en la configuración de Visual Studio para solucionar un problema de inclusión generalmente no es realmente una buena idea desde el punto de vista del diseño. Su código será menos portátil para diferentes máquinas con diferentes diseños de directorio.

Mi sugerencia sería establecer una organización de su código para que las rutas relativas de los subdirectorios (en relación con su código incluido) sean corregidas:

  • Agregue la "carpeta base" al proyecto ( propiedades del proyecto -> Propiedades de configuración -> C / C ++ -> Directorios de inclusión adicionales, "directorios de inclusión adicionales" )
  • Agregue los subdirectorios a las instrucciones #include, es decir, #include "subdirectory/somefile.h" .

Esto tiene la ventaja adicional de poder ver qué carpeta de su Solución contiene el archivo; a menudo es información útil cuando está tratando de encontrar su camino o tratando de descubrir para qué sirve un archivo.


Descubrí que puedo acortar longitudes de ruta en la mayoría de las situaciones, incluso en MSVC, mediante un ligero truco de mano usando el comando SUBST. Mostraré un ejemplo para acortar las rutas de acceso de inclusión de C ++ heredadas predeterminadas, pero lo haría para las rutas de acceso relacionadas con el proyecto. Primero cree uno o más archivos por lotes como este (y ejecútelos desde el Explorador de Windows o desde la línea de comando):

MDrive.bat: subst M: /D subst M: "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC" WDrive.bat: subst W: /D subst W: "C:/Program Files (x86)/Windows Kits/8.1/Include" ... This is just and example. You would do this for your project related include directories.

Puede crear varios de estos para sus rutas más largas. En el caso anterior, solo estoy acortando las rutas heredadas estándar que MSVC usa de forma predeterminada. Por cierto, el comando Subst funciona sin derechos administrativos, pero no pise una letra de unidad física o mapeada existente (no estoy seguro de lo que sucedería, no quiero probarlo en este momento).

Este paso es opcional. Yo en MSVS 2010+ agregué una hoja de propiedades personalizada. Por cierto, si no conoce las hojas de propiedades personalizadas, debería hacerlo. Ver páginas de propiedades (Visual C ++) . VER-Otra ventana de propiedades de Windows , haga clic con el botón derecho en el proyecto en el Administrador de propiedades, agregue una nueva hoja de propiedades del proyecto . En Macros de usuario , agregue una macro, p. Ej. MyProjectIncludePaths y establezca el valor (en este ejemplo) en

M:; M:/atlmfc/include; W:/um; W:/shared; W:/winrt

--sólo 49 caracteres en este ejemplo, que es mucho más corto que el predeterminado de

$(VC_IncludePath); $(WindowsSKD_IncludePath)

que tras la expansión macro se traduce a

C:/Program Files (x86)/Windows Kits/8.1/Include;C:/Program Files (x86)/Windows Kits/8.1/Include/atlmfc/include;C:/Program Files (x86)/Windows Kits/8.1/Include/um;C:/Program Files (x86)/Windows Kits/8.1/Include/shared;C:/Program Files (x86)/Windows Kits/8.1/Include/winrt

Según mi recuento, el valor predeterminado es de 270 caracteres, es decir, más de 260 caracteres, ¿alguien puede explicar esto?

En las páginas de propiedades del proyecto (es decir, no en la hoja de propiedades personalizadas), en mi ejemplo fui a Propiedades de configuración-Directorios de VC ++ y cambié el valor Incluir directorios a $ (MyProjectIncludePaths) , pero en la práctica iría a (en su hoja de propiedades personalizadas si creó una) C / C ++ - General y agregue $ (MyProjectIncludePaths) a los directorios de inclusión adicionales .

Además de las rutas heredadas de 270 caracteres, he podido agregar algunas rutas razonables de longitud en Directorios de inclusión adicionales . Quizás los directorios de inclusión adicional tengan su propio límite de longitud (?).