Tengo que incluir muchos archivos de encabezado, que están en diferentes subdirectorios. ¿Hay alguna forma en Visual Studio (estoy usando 2005 edición) para establecer una ruta de acceso que Visual Studio buscará también en los subdirectorios para los archivos de encabezado?¿Cómo incluir subdirectorios en Visual Studio?
Respuesta
Establecer las rutas de búsqueda de carpeta 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 la de asentarse en una organización de su código para que las rutas relativas de los subdirectorios (en relación a su incluyendo el código) se fijan:
- Añadir la carpeta "base" de el 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 añadida de ser capaz de ver qué carpeta en su solución contiene el archivo - que a menudo es información útil cuando se está tratando de encontrar su camino alrededor o tratando de averiguar lo que un archivo es para .
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 manera de establecer una búsqueda recursiva de carpetas en Visual Studio (aunque Xcode no tiene problemas para configurarlas y usarlas). Lo que hacemos es la lista de todos los directorios en un archivo y especifique el archivo en la C/C++ de línea de comandos opciones adicionales:
@ "IncludeFolders.rsp"
rara vez encontramos problemas mediante la búsqueda recursiva, aunque una la inclusión accidental de ``/'' desalentó un poco las cosas.
He descubierto que puedo acortar longitudes de camino 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. En primer lugar crear uno o más archivos por lotes como éste (y ejecutarlos desde el Explorador de Windows o la línea de comandos):
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.
Se puede crear un número de estos por sus caminos más largos. 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 Property Pages (Visual C++). VER-Otra Ventana de propiedades de Windows, haga clic derecho en el proyecto en el administrador de propiedades, Agregue una nueva hoja de propiedades de proyecto. En Macros de usuario, agregue una macro, p. Ej.MyProjectIncludePaths y establecer el valor (en este ejemplo) para
M:; M:\atlmfc\include; W:\um; W:\shared; W:\winrt
--only 49 caracteres en este ejemplo, que es mucho más corto que el valor predeterminado de
$(VC_IncludePath); $(WindowsSKD_IncludePath)
que, tras la expansión de la macro se traduce en
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 para el proyecto (es decir, no la hoja de propiedades personalizado), en mi ejemplo Fui a Directorios configuración Propiedades-VC++ y cambió el Incluir directorios valor a $ (MyProjectIncludePaths) , pero en la práctica se va a ir a (en su página de hoja de propiedad personalizada si ha creado uno) C/C++ - general y añadir $ (MyProjectIncludePaths) adicional a la Incluir directorios.
Además de las rutas heredadas de 270 caracteres, he podido agregar algunas rutas razonables de longitud bajo Directorios de inclusión adicionales. Quizás los directorios de inclusión adicional tengan su propio límite de longitud (?).
- 1. ¿Cómo incluir archivos de encabezado en Visual Studio 2008?
- 2. Cómo incluir carpetas específicas en la compilación con visual studio
- 3. Cómo incluir y dónde encontrar pthread.h para Visual Studio?
- 4. ¿Puedo incluir dll en exe (en Visual Studio)?
- 5. Visual Studio no puede incluir el archivo de encabezado.
- 6. ¿Es posible incluir la instalación de Visual Studio 2008 SP1?
- 7. ¿Cómo incluir fuente en lugar de una biblioteca en C#/Visual Studio?
- 8. ¿Cómo guardar automáticamente el archivo del proyecto después de incluir un nuevo archivo en Visual Studio?
- 9. Cómo NO incluir nombres de carpetas de Visual Studio Project en espacios de nombres generados
- 10. Boo en Visual Studio?
- 11. #warning en Visual Studio
- 12. LINQPad en Visual Studio
- 13. C en Visual Studio
- 14. Visual Studio 2012 en comparación con Visual Studio 2010 (delta)
- 15. ¿Cómo se definen las rutas relativas en Visual Studio Project?
- 16. ¿Cómo agrego una carpeta App_Data en Visual Studio?
- 17. Proyecto de Visual Studio: ¿cómo incluir una referencia para una sola configuración?
- 18. ¿Cómo funciona Visual Studio Intellisense?
- 19. ¿Cómo reconstruir Visual Studio Toolbox?
- 20. ¿Cómo reiniciar Visual Studio manualmente?
- 21. ¿Cómo abro los enlaces en Visual Studio en mi navegador web y no en Visual Studio?
- 22. Incluir archivos DLL personalizados en la plantilla de proyecto de Visual Studio
- 23. ¿Cómo detener una compilación en Visual Studio?
- 24. Cómo depurar Visual Studio en 64-bit
- 25. Cómo deshabilitar AnkhSVN en Visual Studio 2010?
- 26. ¿Cómo activar IntelliSense en Visual Studio 2010?
- 27. ¿Cómo desarrollar GUI únicas en Visual Studio?
- 28. Cómo ver qDebug() en Visual Studio?
- 29. Cómo refactorizar grandes proyectos en visual studio
- 30. Cómo agregar NUnit en Visual Studio
Mal. Las búsquedas recursivas fueron las predeterminadas entre los entornos de desarrollo clásicos de Macintosh, como CodeWarrior. Tenían una convención simple de que el uso de parens alrededor de un (directorio) se saltaba de forma automática, por lo que tenía que agregar una ruta específica. Esto mantuvo la lista de inclusión muy simple y siempre me la perdí en Windows. –