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 que se propaga. Por ejemplo, si el evento pre-compilación contiene este (ya sea directamente o dentro de un archivo por lotes):Configuración de variables de entorno en el evento de preconstrucción y uso en el paso de compilación
set MY_LIB_VERSION=1.0.0
y AdditionalIncludeDirectories tiene esta:
c:\path\to\library\my_lib_v$(MY_LIB_VERSION)\include
entonces yo esperaría que la compilación funcione si el my_lib_v1.0.0
existe el directorio. Pero en cambio, me sale
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)
que deducir que la variable de entorno establecido en caso de pre-construcción, por lo tanto no se propaga al paso de compilación, pero puedo estar perdiendo algo.
¿Cómo puedo establecer la variable de entorno en el evento de preconstrucción y usarlo en el paso de compilación?
(Alternativamente, otras maneras sensibles de la definición de una versión de la biblioteca una vez y usarlo varias veces para AdditionalIncludeDirectories y AdditionalLibraryDirectories harían igual de bien.)
actualización: Terminé la solución de nuestra 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 adicionalmente <svn_path>\libraries\my_lib_v1.0.0
y llámelo dependencies\my_lib
en la copia de trabajo. Entonces la configuración del proyecto podría referirse a 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 es necesario cambiar la configuración del código y del proyecto.
A partir de Windows 7 (por lo que parece) existe el comando 'SETX' para almacenar variables de entorno persistentemente. Fuente: http://ss64.com/nt/setx.html – bassim