Необязательные переменные окружения с помощью vcproj / vsprops - PullRequest
4 голосов
/ 05 января 2010

Есть ли способ сделать замену переменной среды в файле проекта (с vsprops или без), который, если переменная не найдена, заменяется значением по умолчанию? Я не нашел никакого способа сделать это, потому что кажется, что все переопределяет переменные окружения.

РЕДАКТИРОВАТЬ: Мне нужно, чтобы это работало для свойства, а не для переменной среды. В частности, devenv может быть вызван из другого источника с переменной среды, указывающей целевой каталог сборки. Если эта переменная не существует (возможно, потому что devenv просто используется в качестве IDE), тогда она должна использовать значение по умолчанию.

У меня уже есть эта работа для MSBuild; Теперь мне нужно, чтобы он работал на VCBuild.

Ответы [ 3 ]

1 голос
/ 05 января 2010

Я не думаю, что это можно сделать на уровне проекта: насколько я знаю, файл проекта vc не анализируется для логических операторов (кроме событий сборки, в которых вы можете использовать синтаксис пакетного файла, но это потому, что они запускаются как командный файл).

Единственное, что вы можете сделать, - это создать глобальную переменную среды, которая имеет переменную по умолчанию. Он будет переопределен, если среда, в которой вызывается devenv, также указывает его.

окружающая среда:

MYVSOUTDIR="c:/temp"

vcproj / vsprops:

OutputDirectory="$(MYVSOUTDIR)\_$(ConfigurationName)_$(PlatformName)"

переопределить это в командном файле:

set MYVSOUTDIR="d:/mytemp"
devenv
0 голосов
/ 06 января 2010

Я знаю, что это технически выходит за рамки моего первоначального вопроса, но я решил эту проблему, написав надстройку, которая обнаружит, установлена ​​ли переменная окружения, и, если нет, создаст значение переменной по умолчанию и сохранит Это. Это не самое элегантное решение, но оно работает.

0 голосов
/ 05 января 2010

хм, видимо я не знаю, как тут XML XML

 <PropertyGroup Condition=" '$(your_var)' == '' ">
  <your_var>default</your_var>
 </PropertyGroup>
...