Операции в команде
В дополнение к операциям переназначения <, > и >>, утилита
MAKE добавляет операции << и &&. Эти операции для создания подаваемых на вход команды данных создают в оперативном порядке файл.
Операция << создает временный файл и переназначает поток стандартного ввода команды таким образом, что он поступает из созданного файла. Если у вас имеется программа, которая допускает ввод
данных из потока stdin, то команда:
MYPROG <<!
Это лишь тест
!
будет создавать временный файл, содержащий строку "Это лишь тест
\n", переопределяя ее как единственный поток входной информации
для программы myрrog. Восклицательный знак (!) представляет собой
в данном примере разделитель; в качестве разделителя для этого
файла можно использовать любой символ за исключением символов #
или \. Первая строка, начальным символом которой является символ
разделителя, завершает файл. Остальная часть строки, следующая за
символом разделителя (в данном примере, восклицательным знаком)
считается часть предшествующей команды.
Операция && аналогична операции <<. Он создает временный
файл, но вместо того, чтобы сделать этот файл стандартным потоком
ввода для указанной команды, операция && заменяется именем временного файла. Это оказывается полезным в том случае, если вы хотите, чтобы утилита MAKE создала файл, который должен быть использован в качестве источника входных данных команды. В
приведенном ниже примере показывается, как создать "файл подсказки" для утилиты TLINK.
MYPROG.EXE: $(MYOBJS)
tlink /c @&&!
COS $(MYOBJS)
$*
$*
$(MYLIBS) EMU.LIB MATHS.LIB CS.LIB
Заметьте, что макрокоманда (которая обозначается с помощью
знака $) расширяется при создании файла. $* заменяется именем
создаваемого файла без расширения, а $(MYOBJS) и $(MYLIBS) заме-
няются значениями макрокоманд MYOBJS и MYLIBS. Таким образом, для
TLINK файл будет выглядеть следующим образом:
COS a.obj b.obj c.obj d.obj
MYPROG
MYPROG
w.lib x.lib y.lib z.lib EMU.LIB MATHS.LIB CS.LIB
Если не используется параметр командной строки -K, то все
временные файлы удаляются. Параметром -K следует пользоваться для
"отладки" временных файлов, если возникает впечатление, что эти
файлы работают неверно.