2010-02-17 12 views
6

Me gustaría sobrescribir los directorios utilizados por Visual Studio (devenv.exe) para las rutas del compilador y la biblioteca. Sé cómo hacerlo interactivamente a través de Herramientas-> Opciones-> Directorios de VC++, pero me gustaría automatizar esto.cómo usar el archivo .vsprops para reemplazar los directorios de VC++ en MS Visual Studio

http://msdn.microsoft.com/en-us/library/t9az1d21(VS.80).aspx tiene una nota tentadora sobre esto: "Si desea configurar rutas de búsqueda de directorio (para sus proyectos) que puedan compartir otros usuarios o que se puedan aplicar en varios equipos, Visual C++ ofrece una alternativa al uso este diálogo, a través de las hojas de propiedades del proyecto. Para obtener más información, vea Hojas de propiedades (C++). "

Si sigue el enlace a la documentación de Hojas de propiedades, hay mucha información sobre el mecanismo pero ninguna sobre las propiedades reales que necesita establecer.

Encontré la información poblada por el diálogo Directorios de VC++, en% LocalAppData% \ Microsoft \ VisualStudio \ 8.0 \ VCComponents.dat (para VS 2005 y 9.0 para VS 2008); parece establecer varias propiedades en VC \ VC_OBJECTS_PLATFORM_INFO \ win32 \ Directories y ... \ x64 \ Directories.

¿Alguien ha hecho esto antes y sabe cuál es la asignación de los nombres de propiedad utilizados en VCComponents.dat a los nombres para usar en un archivo .vsprops?

Me gustaría que esto funcione en VS2005, VS2008 y VS2010, idealmente.

En VS2010, Microsoft eliminó por completo el cuadro de diálogo Directorios de VC++ en Opciones de visualización, lo hizo por proyecto y ahora obtiene una interfaz de usuario interactiva para editar estos directorios en Propiedades del proyecto en lugar de Opciones de visualización; esto también significa que hay una IU para eso en el administrador de propiedades; luego, si desea realizar cambios por máquina en lugar de por proyecto como solía hacerlo, simplemente configure una hoja de propiedades de la manera que desee y haga que todos sus proyectos hereden de ella. Esto suena como una gran mejora sobre la vieja manera. Y una forma directa de hacer lo que quiero hacer. Pero solo en VS2010.

VS2005 y VS2008 no tienen la interfaz de usuario para establecer estas propiedades en una hoja de proyecto o propiedad; Estoy feliz de hacerlo a mano, pero no sé cómo se supone que debe ser.

He aquí un archivo de VS 2005 .vsprops vacío:

<?xml version="1.0"?> 
<VisualStudioPropertySheet 
    ProjectType="Visual C++" 
    Version="8.00" 
    Name="pathSettings" 
    > 
</VisualStudioPropertySheet> 

he instalado VS 2010 y utilizó su nueva interfaz gráfica de usuario ordenada para hacer cambios en los directorios de búsqueda; se parece a esto:

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ImportGroup Label="PropertySheets" /> 
    <PropertyGroup> 
    <ExecutablePath>C:\Test;$(PATH)</ExecutablePath> 
    </PropertyGroup> 
</Project> 

Sin embargo, que no funciona textualmente en VS2005 - VS2005 se niega a cargar (quejándose no se encontró ninguna declaración DTD/esquema).

I Plunked que en el recipiente, en respuesta a lo cual VS2005 me dice "Elemento 'PropertyGroup' es inesperado según el modelo contenido del elemento padre VisualStudioPropertySheet la" espera:. Herramienta, UserMacro." Tool y UserMacro son las únicas cosas que se muestran en el ejemplo en la página de MSDN [drat - StackOverflow no me deja como nuevo usuario poner un hipervínculo aquí - primer resultado de búsqueda de Google para 'hoja de propiedades herramienta usermacro'] - tal vez esos son las únicas cosas legales en una hoja de propiedades VS2005?

+0

Más enlaces: - Propiedad la documentación técnica: http://msdn.microsoft.com/en-us/library/a4xbdz1e(VS.80).aspx - artículo sobre los cambios en VS 2010: http://blogs.msdn.com/vsproject/archive/2009/07/07/vc-directories.aspx Lo que no sé es qué poner en un archivo .vsprops (VS2005 o 2008) o archivo .props (2010) para lograr lo mismo que logras editando VCComponents.dat, para establecer o anular los directorios de búsqueda path/include/library para cada plataforma de compilación. – metamatt

+0

Esto parece útil/relevante (todavía lo está procesando): http://stackoverflow.com/questions/142708/what-do-delimiter-and-inheritsfromparent-attributes-mean-in-vsprops-files – metamatt

+0

OK, si solo Tool and UserMacro funciona allí, tal vez tengo que encontrar la manera correcta de anular la ruta de inclusión del compilador y la ruta de inclusión del enlazador utilizando las directivas de la herramienta. Eso no va a ayudar con el camino ejecutable, ¿verdad? – metamatt

Respuesta

8

En primer lugar, existe una guía para editar hojas de propiedad de la misma manera que las propiedades del proyecto en todas las versiones VS de las que habla.

View->Other Windows->Property Manager 

muestra una ventana en la que puede ver todas las configuraciones de proyectos y la jerarquía de las hojas de propiedades.

una hoja de propiedades se pueden utilizar para anular todos los propiedades de un archivo vcproj, además también tiene Macros de usuario. Para anular las rutas de las que habla, esta es una hoja de propiedades de ejemplo para VS2008 que establece los directorios intermedios, de salida, de inclusión y de biblioteca; lo puso en la parte superior de la jerarquía en el Administrador de Propert para asegurarse de que surtan efecto:

<?xml version="1.0" encoding="Windows-1252"?> 
<!-- override paths --> 
<VisualStudioPropertySheet 
    ProjectType="Visual C++" 
    Version="8.00" 
    Name="PathSettings" 
    IntermediateDirectory="$(TEMP)\$(ProjectName)_$(ConfigurationName)" 
> 
<Tool 
    Name="VCCLCompilerTool" 
    AdditionalIncludeDirectories="d:\api\include" 
/> 
<Tool 
    Name="VCLibrarianTool" 
    OutputFile="c:\mylibs" 
/> 
<Tool 
    Name="VCLinkerTool" 
    OutputFile="c:\myoutput" 
    AdditionalLibraryDirectories="d:\api\_lib" 
/> 

Esto debería funcionar para VS2005 también, pero no para VS2010: a medida que comprendieron que utiliza un formato diferente, por lo Tendrás que mantenerlos a los dos por separado.

+0

Hmm, se ve prometedor. Gracias por la respuesta, y me pregunto por qué los foros oficiales de MS no pudieron decirme eso hace un año. Me encantaría aceptar su respuesta, pero no estoy en una posición fácil para verificarlo ahora. Una pregunta: esto parece estar en la línea de mi 3er comentario en la publicación original (con fecha del 19 de febrero de 2010 a las 0:21, lo siento, no puedo vincularlo) usando solo la herramienta: ¿qué hay de configurar el ejecutable? ruta utilizada para invocar las herramientas? Necesita poder invocar el compilador x64 o x86, el enlazador, etc. – metamatt

+0

seleccionar el compilador, etc. no funciona de esa manera. Selecciona la plataforma y la configuración en el IDE, que luego selecciona las herramientas adecuadas y las hojas de propiedades establecidas para esa configuración/plataforma. Usted tiene la opción Linker-General-> Advanced-> Target Machine, aunque debería establecerse en una hoja de propiedades cuando usa 64 bit. – stijn

+1

OK. No describí en la pregunta, pero la razón por la que estaba preguntando en primer lugar: teníamos un grupo de desarrolladores trabajando en un proyecto usando el IDE de VC, pero compilando en contra de un Platform SDK más nuevo. Las compilaciones oficiales tienen secuencias de comandos y funcionan bien; los desarrolladores quieren construir usando el IDE; Quería una forma de 1 parada de configurar el IDE para apuntar a Platform SDK sin que cada desarrollador tenga que hacerlo manualmente. Las hojas de propiedades parecen ser la respuesta, pero solo si nos permiten establecer todas las configuraciones necesarias. Por ahora usamos/useenv, que funciona pero te obliga a invocar IDE por separado para x64/x86. – metamatt

Cuestiones relacionadas