В отличие от чего?
Предположим, у вас есть программа, которую вы разделили на два файла, которые вы назвали образно file1.c
и file2.c
. Вы можете скомпилировать программу, запустив
cc file1.c file2.c -o yourprogram
Но для этого нужно каждый раз перекомпилировать оба файла, даже если изменился только один. Вы можете разложить шаги компиляции на
cc -c file1.c
cc -c file2.c
cc file1.o file2.o -o yourprogram
и затем, когда вы редактируете один из файлов, перекомпилируйте только этот файл (и выполните этап связывания, независимо от того, что вы изменили). Но что, если вы редактируете один файл, а затем другой,
и вы забываете, что вы редактировали оба файла и случайно перекомпилировали только один?
Кроме того, даже для всего двух файлов у вас есть команды примерно на 60 символов. Это быстро становится утомительным, чтобы напечатать. Хорошо, конечно, вы можете поместить их в скрипт, но потом вы снова будете перекомпилировать. Или вы можете написать действительно причудливый, сложный скрипт, который проверяет, какие файлы были изменены, и выполняет только необходимые компиляции. Вы видите, куда я иду с этим?