Необязательные переменные окружения с помощью vcproj/vsprops
Есть ли способ сделать замену переменной среды в файле проекта (с vsprops или без), который, если переменная не найдена, заменяется значением по умолчанию? Я не нашел никакого способа сделать это, потому что все, кажется, переопределяет переменные среды.
РЕДАКТИРОВАТЬ: мне нужно это работать для свойства, а не для переменной среды. В частности, devenv может быть вызван из другого источника с переменной среды, указывающей целевой каталог сборки. Если эта переменная не существует (возможно, потому что devenv просто используется в качестве IDE), тогда она должна использовать значение по умолчанию.
У меня уже есть это работает для MSBuild; Теперь мне нужно, чтобы он работал на VCBuild.
3 ответа
Я знаю, что это технически выходит за рамки моего первоначального вопроса, но я решил эту проблему, написав надстройку, которая будет определять, установлена ли переменная среды, и, если нет, создавать значение переменной по умолчанию и сохранять его. Это не самое элегантное решение, но оно работает.
Я не думаю, что это можно сделать на уровне проекта: насколько я знаю, файл проекта vc не анализируется для логических операторов (кроме событий сборки, в которых вы можете использовать синтаксис пакетного файла, но это потому, что они запускаются как пакетные). файл).
Единственное, что вы можете сделать, - это создать глобальную переменную среды, которая имеет переменную по умолчанию. Он будет переопределен, если среда, в которой вызывается devenv, также указывает это.
среда:
MYVSOUTDIR="c:/temp"
vcproj / vsprops:
OutputDirectory="$(MYVSOUTDIR)\_$(ConfigurationName)_$(PlatformName)"
переопределите это в командном файле:
set MYVSOUTDIR="d:/mytemp"
devenv
Хм, видимо я не знаю, как здесь сформатировать XML
<PropertyGroup Condition=" '$(your_var)' == '' ">
<your_var>default</your_var>
</PropertyGroup>