Ответ 1
Основное практическое отличие между двумя версиями MSYS и собственной версией заключается в том, что бывший использует оболочку MSYS для выполнения своих команд, а в дальнейшем использует cmd
. Это означает, что с версией MSYS вы можете писать рецепты так же, как и в системе Unix или Linux, в то время как с родной версией Windows вам, возможно, придется делать что-то по-другому. Для простого выполнения команд они работают одинаково, но для более сложных действий рецепты должны отличаться, потому что cmd
имеет сильно отличающийся синтаксис, чем оболочки Unix.
Например, вы можете обрабатывать рекурсивные сборки, подобные этому с помощью MSYS:
recurse-subdirs:
for i in $(SUBDIRS); \
do \
cd $$i && make all || exit; \
done
В то время как с собственной версией make вам придется делать что-то вроде этого:
recurse-subdirs: FORCE
for %%i in ($(SUBDIRS)) do \
cd %%i && make all || exit
С MSYS также можно с уверенностью предположить, что доступны обычные команды Unix (например, rm *.o
), в то время как с помощью native make вы захотите вместо этого использовать команды Windows (например, del *.o
).
Какая версия make доступна, зависит от того, как вы устанавливаете PATH
. Если обе версии make, одна с именем make
и одна с именем mingw32-make
, можно найти, выполнив поиск PATH
, тогда обе команды будут доступны. Это правда, используете ли вы оболочку MSYS или cmd
.