Переменная среды уровня проекта в исходном пути - PullRequest
1 голос
/ 09 марта 2020

Я хотел бы указать переменную среды для использования в исходном пути (пути к библиотеке) на уровне проекта.

У нас часто есть несколько версий, извлеченных из нашего SVN-репозитория одновременно в разных каталогах, и я хотел бы указать репозиторий root для проекта в относительном выражении на уровне проекта. Затем я мог бы использовать этот путь в исходном пути проекта, и мне не пришлось бы включать неразличимые косые черты (..\) в пути.

Например, скажем, я извлек магистраль на c:\projects\trunk , Затем под ним у меня есть проект в <repositoryroot>\Foo\Bar\ под trunk, который использует Delphi Spring Framework под <repositoryroot>\components\external\Spring4d. В результате в пути поиска я получаю целую кучу каталогов с ..\..\External\Spring4D\Source в начале. Например ..\..\External\Spring4D\Source\Base\Collections. Я хотел бы иметь возможность использовать ${Spring4D} вместо этого, производя ${Spring4D}\Base\Collections\, что намного менее многословно, и это означает, что если вы перемещаете проект или компонент, вы можете изменить одно значение и обновить все пути.

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

У кого-нибудь есть идеи, как этого добиться? Существуют ли какие-либо настройки или даже надстройки, обеспечивающие такую ​​функциональность?

Ответы [ 2 ]

2 голосов
/ 10 марта 2020

Вы можете вручную отредактировать файл проекта (.dproj) и добавить туда переменную:

<PropertyGroup>
  <MyVariableName>MyVariableContent</MyVariableName>
</PropertyGroup>

Позже вы можете ссылаться на содержимое этой переменной:

<DCC_UnitSearchPath>C:\Components;$(MyVariableName)</DCC_UnitSearchPath>

Вы также можете определить новую переменную среды (SystemPropertiesAdvanced.exe -> Переменные среды -> Добавить) и затем обратиться к этой переменной, используя тот же синтаксис, например:

<DCC_UnitSearchPath>C:\Components;$(PATH)</DCC_UnitSearchPath>

(Обратите внимание, что это очень плохая идея использовать PATH здесь, это всего лишь пример переменной, которая будет существовать в вашей среде.)

1 голос
/ 13 марта 2020

Вы также можете использовать магический скрипт cmd c для создания переменных среды, которые указывают на эти подкаталоги, и в конце вызывают IDE, поэтому эти переменные среды доступны в IDE так же, как глобальные переменные среды быть (см. ответ pepak для этого).

Указатели:

  • % 0 - имя текущего файла cmd
  • use tilde для части имени файла
...