Чтение переменных cmd.exe внутри файла сборки MinGW - PullRequest
0 голосов
/ 01 февраля 2012

Я пишу установку в Makefile, в котором мне нужно установить PATH env. переменная.

В части окна я нашел следующее:

  • set: С помощью set PATH="%PATH%;%CD%" я могу изменить PATH внутри рабочей среды. Есть две проблемы с этим:
    • Среда является порожденной cmd.exe make, которая затрагивает ее переменную и удаляет эффект, как только закрывается
    • Даже если бы предыдущая проблема могла быть решена, все равно cmd.exe, который вызывает make, закрылся бы однажды, а измененный PATH потерян.
  • setx: инструмент Microsoft, который может постоянно изменять env. переменные. Согласно самой Microsoft , это единственная опция командной строки, которая делает это. Однако использование setx PATH "%PATH%;%CD%" -m превращает путь в литерал %PATH%;%CD% и не заменяет переменные их содержимым!

Обратите внимание, что я звоню make из cmd.exe не Cygwin или другим модифицированным Windows-оболочкам, которые действуют больше как Linux. Я хочу сказать, что хотя я могу использовать $(PATH) в своем make-файле (вместо %PATH%), я не могу использовать pwd (вместо %CD%)

Также обратите внимание, что если в самом cmd я запускаю:

setx PATH "%PATH%;%CD%" -m

работает отлично. Каким-то образом мне нужно заставить make выполнить эту команду.

У вас есть идеи, как это исправить, или какой у меня есть обходной путь?

P.S. Просто для записи, echo "%PATH%;%CD%" в Makefile также перекликается с литералом "%PATH%;%CD%", а не позволяет cmd.exe обрабатывать его

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012

Временное решение:

Создайте файл .bat, поместите туда команду и вызовите ее из файла Makefile.

Я все еще заинтересован в прямом исправлении в Makefile.

0 голосов
/ 01 февраля 2012

В свое время инструменты Borland C ++ Free Command Line включали версию make, которая хорошо работала с командной строкой dos / windows. Вероятно, все еще где-то плавает.

...