Цитата(alx2 @ Jun 10 2009, 19:47)

Ну тогда я все правильно написал про zsh - у меня под виндой make, запуская sh, вызывает именно Z-shell. Не знаю, почему Вас это удивило.
Потому что я говорил про мой sh
Цитата
А при чем тут make? Прочитайте раздел 4.4 документации на GNU make.В случае, о котором говорил Real, звезды подставляются как раз в команду, а вовсе не в цели или пререквизиты. Таким образом, make в том примере и не должен разворачивать звезды, это не его работа. Извините за недоверие, но в том, что предыдущие версии make, вопреки документации, делали это сами, я продолжаю сомневаться.
Позвольте я Вам процитирую, что сказал ReAl:
Цитата(ReAl @ Jun 4 2009, 23:10)

В случае с sh (и, кажется, с некоторыми вариантами самого make, тогда и упрятывание sh из путей не помогает) раскрутка '*'-чек происходит до вызова rar и ему передаются уже все обнаруженные файлы.
Курсив мой. Насколько я понимаю, здесь речь идёт именно о разворачивани звёздочек мейком
в команде. Моя память говорит мне, что я также встречался с таким поведением мейка. Но доказать я сейчас конечно не смогу, я не храню кривые мейки.
Цитата
Да полно, не сердитесь Вы так.

Ну вот сами рассудите. До этого уже неоднократно оказывалось, что когда поведение программы расходилось с Вашими ожиданиями, поведение программы совпадало с документацией, а Ваши ожидания - нет.
Да бросьте вы. Вот моя команда в makefile:
Код
archive:
@cmd /WAIT /C "start rar a -r -agyy-mm-dd,hh-nn-ss ./bak/test_.rar ./src/*.c ./src/*.h"
Вот что происходит:
Код
>make archive
"gp" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Это всё в соответствии с документацией? И то, что у Вас эта строка работает, а у меня - нет, это тоже прописано в документации?
Вы меня извините за повтор, но у меня такое чувство, что часть моих аргументов и примеров уходит в никуда. Особенно про необходимость адаптации программы при портировании на другую платформу.
Цитата
А пока Ваши аргументы - это Ваши ожидания, не подкрепленные документацией...
Да я собственно и не отрицал этого. Говоря "глючит", я имел в виду - "работает не так, как я ожидаю". Такая формулировка слова "глючит" примирит Вас с моим высказыванием? :-)
Цитата
Кстати, раз Вы уже поняли, расскажите, что это было за "gp", которое cmd у Вас не мог найти. Любопытно все-таки...
Дык, там же видно было:
Код
CreateProcess(D:\kgp\bin\sh.exe,D:/kgp/bin/sh.exe -c "cmd /WAIT /C \"start rar a -r -agyy-mm-dd,hh-nn-ss ./bak/test_.rar
./src/*.c ./src/*.h\"",...)
Live child 0x009941b0 (archive) PID 10069136
"gp" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
gp - это кусочек от пути к sh (D:\kgp\bin\sh.exe). Каким образом он попал в командную строку, переданную cmd - не знаю. Может и мейк дурит. Давайте проверим. У меня есть программа ShowCmdLine.exe (ReAl напомнил), которая показывает командную строку. Итак:
Код
archive:
@ShowCmdLine.exe /WAIT /C "start rar a -r -agyy-mm-dd,hh-nn-ss ./bak/test_.rar ./src/*.c ./src/*.h"
Командная строка:
Код
ShowCmdLine.exe D:/kgp/WAIT c:/ "start rar a -r -agyy-mm-dd,hh-nn-ss ./bak/test_.rar ./src/*.c ./src/*.h"
Красота

Проверим, кто же дурит. Переименовываем ShowCmdLine.exe в sh.exe, смотрим, что передаёт make шеллу:
Код
D:/kgp/bin/sh.exe -c "cmd /WAIT /C \"start rar a -r -agyy-mm-dd,hh-nn-ss ./bak/test_.rar ./src/*.c ./src/*.h\""
Вроде всё нормально, не? Значит, таки sh дурит? И не только в моём понимании этого слова?

Цитата
Вот "хвост" вывода make -d, который Вы просили:
Код
Must remake target `archive'.
Creating temporary batch file c:\TMP\make45282.sh
...
У, через временный файл, ничего не видно