variable restaurar modificar java_home entorno crear configurar windows visual-studio compilation environment-variables visual-studio-2003

windows - restaurar - Establecer variables de entorno en el evento previo a la construcción y usarlo en el paso de compilación



variable path windows 10 (3)

En Visual Studio 2003, intento establecer una variable de entorno en el evento de preconstrucción que luego se usará en el paso de compilación, pero el valor no parece propagarse. Por ejemplo, si el evento de preconstrucción contiene esto (ya sea directamente o dentro de un archivo por lotes):

set MY_LIB_VERSION=1.0.0

y AdditionalIncludeDirectories tiene esto:

c:/path/to/library/my_lib_v$(MY_LIB_VERSION)/include

entonces esperaría que la compilación funcionara si el directorio my_lib_v1.0.0 existe. Pero en cambio, obtengo

c:/path/to/prog/my_prog.c(22) : fatal error C1083: Cannot open include file: ''my_lib.h'' Project : warning PRJ0018 : The following environment variables were not found: $(MY_LIB_VERSION)

Deduzco que la variable de entorno establecida en el evento de preconstrucción no se propaga al paso de compilación, pero me puede faltar algo.

¿Cómo puedo establecer la variable de entorno en el evento de preconstrucción y usarlo en el paso de compilación?

(Alternativamente, cualquier otra forma sensata de definir una versión de biblioteca una vez y usarla varias veces para AdditionalIncludeDirectories y AdditionalLibraryDirectories también lo haría).

Actualización : Terminé resolviendo nuestro problema de una manera diferente. Estamos utilizando Subversion, y configuramos la propiedad svn:externals en un subdirectorio del origen del proyecto llamado dependencies , de modo que una salida del proyecto verifique también <svn_path>/libraries/my_lib_v1.0.0 y lo llame dependencies/my_lib en la copia de trabajo. Entonces la configuración del proyecto podría referirse a las dependencies/my_lib/include y similares. La actualización a la versión 1.0.1 de my_lib es simplemente una cuestión de edición de la propiedad svn:externals ; no era necesario cambiar la configuración del código y del proyecto.


Debo admitir que nunca he intentado establecer variables de entorno en un paso previo a la compilación, y puedo ver por qué no necesariamente funcionaría (ejecutar un archivo por lotes probablemente desencadenaría un proceso separado, mientras que usted querría manipular el entorno del proceso principal).

Una solución que he estado usando, pero que solo funcionará cuando pueda determinar la configuración necesaria antes de iniciar Visual Studio, es crear un archivo por lotes que establezca las variables de entorno necesarias y luego inicie Visual Studio con el archivo de solución apropiado. He reproducido el esqueleto de este archivo por lotes a continuación:

REM REM Set up VS environment with defaults (this is for 2008) - need to do this first REM call "C:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools/vsvars32.bat" REM REM Set the environment variables required by the project REM set BOOST_BASE=C:/Boost/include/boost-1_35 REM REM If you need to manipulate the path, do it here REM REM REM Finally, start VS with the appropriate solution file REM devenv MyProjectWithBoost.sln



Las variables de entorno que se establecen con el comando SET son temporales y solo duran la vida del proceso en el que se configuran. Inmediatamente caducan cuando el proceso expira, y no pueden ser vistos por otros procesos.

Un evento de preconstrucción de Visual Studio es un proceso separado. Una vez que ese proceso expira, la variable de entorno deja de serlo.

¿Estás seguro de que las variables de entorno son lo que quieres? ¿Podría hacer esto al establecer un valor en un archivo de texto que se encuentra en una ubicación de red central?

EDITAR : si realmente quiere cambiar persistentemente las variables de entorno en Windows, puede hacerlo, pero implicará llamar a algunas API de Windows en lugar de simplemente llamar a SET. Ej. Http://code.activestate.com/recipes/416087/

Intenta persistir ventanas variables de entorno de Google