с целью есть правило, которое вызывает libtool с некоторыми аргументами. Фактическая командная строка, которая выполняется, когда триггеры правил имеют переставленные аргументы.
Я пытался переставить последовательность аргументов в правиле в различных комбинациях, но последняя выполняемая строка всегда одинакова.
Наконец, я попытался захватить все строки, которые должны быть выполнены в одной переменной, а затем ввел эту переменную, которая будет расширена как строка, которая выполняется оболочкой. Это работает.
например:
1 - оригинал, который не работает:
target.o:
<--------->$(some_command) $(first_arg) $(second_one) $(third) $(fourth)
При срабатывании правила выполняется нечто подобное
<--------->$(some_command) $(second_one) $(fourth) $(third) $(first_arg)
WTF
Если уместно, то some_command - это libtool.
(это из Makefile | gsymcheck / src / MAkefile | в gEDA CAD, который я пытаюсь исправить, чтобы быть совместимым с оптимизацией LTO, кстати.)
строка:
$(AM_V_CCLD)$(gsymcheck_LINK) $(gsymcheck_OBJECTS) $(gsymcheck_LDADD) $(LIBS)
ожидайте, что строка рецепта правила будет выполнена так, как она была задана, не заставляя ее играть в «оригами».