Необязательные переменные окружения с помощью 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>
Другие вопросы по тегам