Вы будете обычно хотеть использовать предописание в заголовочном файле классов, когда Вы захотите использовать другой тип (класс) в качестве члена класса. Вы не можете использовать вперед - объявленный классами методы в заголовочном файле, потому что C++ еще не знает определение того класса в той точке. Это - логика, которую необходимо переместить в .cpp-файлы, но если Вы используете шаблонные функции, необходимо уменьшить их только до части, которая использует шаблон, и переместите ту функцию в заголовок.
Правила включения в make немного сложны - см. этот раздел руководства GNU make. Но да - вы можете сделать то, о чем просили.
Имейте в виду, что включение в make начинается с pwd, а не с пути к Makefile. (поэтому make -f
, вероятно, вызовет проблемы)