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
Es posible que desee investigar esta herramienta: http://workspacewhiz.com/SolutionBuildEnvironmentReadme.html
Lo usamos todo el tiempo para administrar variables de entorno en nuestro entorno de compilación.
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