Если проблема заключается в дополнительном времени компиляции и раздувании бинарного размера, полученном путем компиляции .h как части всех используемых им .cpp-модулей, во многих случаях то, что вы можете сделать, - это сделать класс шаблона опустившимся из не-шаблонного базовый класс для не зависящих от типа частей интерфейса, и что базовый класс может иметь свою реализацию в файле .cpp.
Так же, как вызов любой другой команды из make-файла:
target: prerequisites
shell_script arg1 arg2 arg3
Что касается вашего дальнейшего объяснения:
.PHONY: do_script
do_script:
shell_script arg1 arg2 arg3
prerequisites: do_script
target: prerequisites
Каждое действие в правиле make-файла - это команда, которая будет выполняться в подоболочке. Вам необходимо убедиться, что каждая команда независима , поскольку каждая из них будет выполняться внутри отдельной подоболочки.
По этой причине вы часто будете видеть экранированные разрывы строк, когда автор хочет, чтобы несколько команд выполнялись в одной подоболочке:
targetfoo:
command_the_first foo bar baz
command_the_second wibble wobble warble
command_the_third which is rather too long \
to fit on a single line so \
intervening line breaks are escaped
command_the_fourth spam eggs beans