GnuWin32 make возвращает странную ошибку на квадратной скобке

Я пытаюсь скомпилировать проект на Windows 7 с помощью GNUWin32 make. Я запускаю make из папки, где находится Makefile, но получаю следующую ошибку:

[ ! -d libmf ] && mkdir -p libmf
"[" is not recognised  as internal or external command, operable program or batch file

Я предполагаю, что по какой-то причине интерпретатор cmd не разбирает квадратные скобки, но эта запись описана в руководствах, а makefile исходит от производителя и должен быть правильным. Пробовал make с разными таргетами, текст в ошибочной строке меняется (там таргет определяет макрос), но ошибка та же. Место в make-файле, которое вызывает это, выглядит так:

libmf$(LIBSUFFIX):
                [ ! -d $@ ] && mkdir -p $@

person Sergey Ruddy Omelchenko    schedule 29.01.2016    source источник
comment
[ ! -d libmf ] - это синтаксис bash, он не может работать, если вы не вызовете make в оболочке bash, подобной той, что предоставляется Cygwin или Msys2.   -  person user657267    schedule 29.01.2016
comment
Вы правы, спасибо. С cygwin make все работает нормально!   -  person Sergey Ruddy Omelchenko    schedule 29.01.2016


Ответы (1)


Решение найдено. Надо было использовать cygwin вместо gnuwin32, так как gnuwin32 не содержит всех необходимых команд. Любопытная деталь: у cygwin на самом деле есть программа «[.exe» для эмуляции разбора скобок bash.

person Sergey Ruddy Omelchenko    schedule 29.01.2016