В последнее время стал замечать преимущества этого инструмента) Вот только что то я не до конца осознал!, разве если "makefile" лежит в той же директории что и исходники и остальные подключаемые-файлы тогда в командах не нужно указывать полный путь расположения файла, указывать путь относительно makefile? Далее когда следуют команды make, тут я не понял!, "gcc -c -o main.o main.c" что она делает? И еще, весь синтаксис примерного makefile это подмножество shell?
Наоборот: Makefile включает в себя шел. Грубо говоря это обертка над shell которая позволяет разбивать shell на блоки и указывать зависимости относительно разных блоков кода shell.
`gcc -c -o main.o main.c` - Эта команда ни как не относится к Makefile в чем конкретно вопрос?
И на сколько я помню, если просто вызвать make то выполнится Makefile из текущей директории, по этому пути и должны быть прописаны относительно текущей директории. Но есть возможность вызвать make указав где нужно искать Makefile но какие именно поведение будет тут я сказать не смогу =( никогда так не делал, надо смотреть.
Наоборот: Makefile включает в себя шел. Грубо говоря это обертка над shell которая позволяет разбивать shell на блоки и указывать зависимости относительно разных блоков кода shell.
Очень хорошо сказано.
Дополню, что т.к. команды действительно никакого прямого отношения к makefile не имеют, то они работают так, как считают нужным. Иными словами, в случае с компилятором, это от него самого зависит, как он будет работать с путями к файлам и где эти файлы будет искать.