В Visual Studio 2003 я пытаюсь установить переменную окружения в событии перед сборкой, которое затем будет использоваться на этапе компиляции, но значение, похоже, не передается. Например, если событие предварительной сборки содержит это (напрямую или в пакетном файле):
set MY_LIB_VERSION=1.0.0
и AdditionalIncludeDirectories имеет это:
c:\path\to\library\my_lib_v$(MY_LIB_VERSION)\include
тогда я ожидаю, что компиляция сработает, если каталог my_lib_v1.0.0
существует. Но вместо этого я получаю
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)
Я считаю, что переменная окружения, заданная в событии перед сборкой, поэтому не распространяется на этап компиляции, но я, возможно, что-то упускаю.
Как установить переменную окружения в событии перед сборкой и использовать ее на этапе компиляции?
(В качестве альтернативы любые другие разумные способы определения версии библиотеки один раз и использования ее несколько раз для AdditionalIncludeDirectories и AdditionalLibraryDirectories будут также эффективны.)
Обновление : я решил нашу проблему другим способом. Мы используем Subversion и устанавливаем свойство svn:externals
в подкаталоге источника проекта с именем dependencies
, так что при извлечении из проекта дополнительно извлекается <svn_path>\libraries\my_lib_v1.0.0
и вызывается его dependencies\my_lib
в рабочей копии. Тогда настройки проекта могут относиться к dependencies\my_lib\include
и тому подобное. Обновление my_lib
до версии 1.0.1 - это просто вопрос редактирования свойства svn:externals
- код и настройки проекта менять не нужно.