В чем разница между makefile и SH-файлом

в чем разница между makefile и SH-файлом. sh (раковина файл скрипта) файл также может работать в месте makefile(означает, что мы можем сделайте то же самое, используя файл оболочки, как makefile может сделать), то что разница между ними. существует какая-либо разница в исполнении или любая стандарт, где мы должны использовать makefile и SH-файл.

один пример этого для компиляции hello.C файл с Makefile и оболочкой файл

shell.sh

param="";

CC="gcc"

CFLAGS="-c -Wall";

if [ "$param" == "clean" ];

then

 rm -rf hello

else

$CC $CFLAGS hello.c -o hello

fi
  1. ./shell.sh {построит hello.файл c }
  2. ./shell.sh clean { это чистый файл build }

то же самое с Makefile..

CC=gcc

CFLAGS=-c -Wall

hello: hello.c
        $(CC) $(CFLAGS) hello.c -o hello

clean:
        rm -rf hello 

make {он будет строить}
make clean {это чистый файл build}

оба файла могут генерировать один и тот же вывод. Этот вопрос, потому что некоторые люди используют Makefile, а некоторые люди используют shell..

1 ответов


make автоматически проверяет (на основе меток времени), какие цели необходимо переделать, а какие можно оставить нетронутыми. Если вы пишете свой собственный сценарий оболочки, вам придется либо программировать эту логику самостоятельно, либо все ваши компоненты будут перестроены при запуске сценария - даже те, которые не изменились со времени последней сборки.