событие предварительной сборки выполняется в собственной оболочке (VS порождает процесс cmd.exe), поэтому все ваши вызовы set являются локальными только для этого экземпляра.Поскольку вы говорите, что ваш пакетный файл предварительно сгенерирован, нет необходимости использовать событие предварительной сборки, не так ли?Поскольку существуют другие способы получить VS для доступа к этим переменным:
Вместо простого запуска VS, запустите оболочку, вызовите пакетный файл, затем запустите devenv.exe.Или создайте пакетный файл, чтобы сделать все это:
set OCL_LIBS_X86="%ATISTREAMSDKROOT%libs\x86"
set OCL_LIBS_X64="%ATISTREAMSDKROOT%libs\x86_64"
set OCL_INCLUDE="%ATISTREAMSDKROOT%include"
%comspec% /k "%VCINSTALLDIR%\vcvarsall.bat" x86
devenv.exe
Другой вариант: вместо создания пакетного файла создайте лист свойств, содержащий переменные, и включите в свой проект (ы) лист свойств.Таким образом, вы не прибегаете к переменным окружения, это скорее «способ VS» для работы с переменными.Добавьте файл, установив «Унаследованные свойства проекта» в общих настройках проекта или добавив «InheritedPropertySheets = my.vsprops» в раздел «Конфигурация» в файле vcproj.Пример файла листа свойств:
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="9.00"
Name="toolkit_selector"
>
<UserMacro
Name="OCL_LIBS_X86"
Value="$(ATISTREAMSDKROOT)libs\x86"
/>
<UserMacro
Name="OCL_INCLUDE"
Value="$(ATISTREAMSDKROOT)include"
/>
</VisualStudioPropertySheet>