Я работаю над Makefile
, у которого есть квитанция, производящая некоторый файл с использованием M4. Он использует некоторые сложные конструкции оболочек для вычисления значений макросов, которые должны быть переданы в M4. Как я могу организовать код, чтобы избежать избыточных объявлений, отображаемых в следующем примере?Как определить подпрограммы в Makefile
M4TOOL= m4
M4TOOL+= -D PACKAGE=$$(cd ${PROJECTBASEDIR} && ${MAKE} -V PACKAGE)
M4TOOL+= -D VERSION=$$(cd ${PROJECTBASEDIR} && ${MAKE} -V VERSION)
M4TOOL+= -D AUTHOR=$$(cd ${PROJECTBASEDIR} && ${MAKE} -V AUTHOR)
M4TOOL+= -D RDC960=$$(openssl rdc960 ${DISTFILE} | cut -d ' ' -f 2)
M4TOOL+= -D SHA256=$$(openssl sha256 ${DISTFILE} | cut -d ' ' -f 2)
Portfile: Portfile.m4
${M4TOOL} ${.ALLSRC} > ${.TARGET}
¹ На самом деле много!
Можете ли вы уточнить? Какие избыточные объявления вы хотите избежать? –
Даже если вы можете определить подпрограмму, большая проблема в том, что вы все равно будете называть 'make' 3 раза. Вы можете группировать несколько применений '-V', чтобы сократить это до одного, но вам понадобится дополнительная оболочка для разбора на 3 отдельных параметра' -D' для 'm4'. Существует не так много, чтобы объединить два вызова с 'openssl'. – chepner
@AndrejAdamenko Я хотел бы уменьшить избыточность 'cd ... && $ {MAKE} -V' и найти способ« phonier »поместить вещи. –