Как dmd определяет путь к библиотеке во время компиляции? - PullRequest
0 голосов
/ 15 мая 2018

Как dmd определяет путь к своей библиотеке во время компиляции?

У меня установлены две версии dmd: dmd 2.074 и dmd 2.080.

dmd 2.080 былсобирает файлы 2.074, которые (что не удивительно) не компилируется.

Например, dmd 2.074 имеет functions.d в:

  • / Library / D / dmd / src/phobos/std/functional.d

В то время как dmd 2.080, установленный brew, имеет functions.d по адресу:

  • / usr / local / Cellar / dmd / 2.080.0 / include / dlang / dmd / std / functions.d

Я переименовал /Library/D/... (который имеет 2.074) в /Library/D2_074/....

Теперь dmd 2.080 (находится в/usr/local/bin/dmd) с Фобосом все в порядке.Huzzah!

Может быть, плохо устанавливать несколько версий dmd.

Я пытаюсь понять, как компилятор / компоновщик dmd определяет местоположение его компиляции, ссылкаи (возможно) файлы поддержки времени выполнения.Поэтому, когда я установлю следующую каплю dmd, я больше не сделаю ту же ошибку.

1 Ответ

0 голосов
/ 16 мая 2018

dmd будет искать dmd.conf в следующей последовательности каталогов:

  • текущий рабочий каталог
  • каталог, указанный в переменной среды HOME
  • каталог dmd находится в
  • /etc каталог

Похоже, dmd.conf помещается в /etc/dmd.conf по умолчанию при установке, но, как видно выше, вы можете иметь отдельные конфигурации для отдельных установок.

...