У меня есть файл makefile с линией, содержащий список компонентов с правой стороны. Я хочу использовать макрос $ ^, чтобы архивировать список, который находится в другом каталоге. Следующая строка просто использовать первый компонент в другом каталоге, а остальное обрабатывается в текущем каталоге, который является неправильным:
libExApp.a: xapp_e.o xsage_e.o users.o id.o prog.o
ar rc [email protected] ia32/$^
Если я использую фигурные скобки {}, то нет запятой между файлами, которые будут обрабатываться в тот же каталог.
Итак, как я могу использовать несколько компонентов, все обработанные в одном каталоге.
Вы должны указать файлы, которые используете в качестве зависимостей, и просто использовать 'ar rc $ @ $ ^' в качестве рецепта. Кроме того, рассмотрите возможность отказа от использования рецептов, которые создают файлы в одном каталоге из файлов в другом; «make» на самом деле не был разработан с учетом этого, и хотя это можно сделать, я предпочитаю просто идти с традиционным способом делать вещи, а именно создавать все файлы на месте и использовать цель «install» для копирования их к месту назначения. – reinierpost
@reinierpost make can * абсолютно * обрабатывает цели и предпосылки в произвольных каталогах. Хотя, конечно, некоторые части этого могут усложниться. Тем не менее, это не то же самое касается создания целей в * установленных * местах. Это не то, что нужно сделать. –
@ Этан Рейснер: Конечно, может, я просто советую против этого. – reinierpost