Функция в make-файле - PullRequest
       13

Функция в make-файле

0 голосов
/ 14 декабря 2011

В моем .profile есть функция, которая мне нужна в make-файле (одном из первых, которые я когда-либо делал). Насколько я могу сказать, make не допускает интерактивно определенных функций или псевдонимов

Как я все еще могу использовать функцию? Это определено в моем .profile:

matlabs(){
    /Applications/Matlab.app/bin/matlab -nodesktop -nosplash -nojvm -r "disp('MATLAB:');${1}; quit();" | tail -n +11
}

И я хотел бы сделать это в make-файле:

num.txt : finance.m
    matlabs finance

1 Ответ

1 голос
/ 14 декабря 2011

Makefiles не являются скриптами оболочки.Что вы можете сделать, так это создать скрипт оболочки из вашей matlabs функции;поместите следующее в исполняемый файл matlabs где-то в вашем PATH:

#!/bin/sh
/Applications/Matlab.app/bin/matlab -nodesktop -nosplash -nojvm \
   -r "disp('MATLAB:');${1}; quit();" \
  | tail -n +11

В качестве альтернативы, если вы не хотите, чтобы Makefile зависел от внешнего скрипта, и вам нужно часто выполнять это преобразованиедля него можно определить неявное правило Makefile:

%.txt : %.m
        @/Applications/Matlab.app/bin/matlab -nodesktop -nosplash -nojvm \
            -r "disp('MATLAB:'); $<; quit();" \
            | tail -n +11 > "$@"
...