Это, вероятно, будет делать то, что вы имеете в виду:
makefile_fragment:
program-that-emits-makefile-fragment > [email protected]
include makefile_fragment
Это достаточно? Существуют дополнительные трюки, которые вы можете использовать, если они вам нужны, например, когда правило добавляет контекст вокруг того, что создает программа, или передает вывод через sed, чтобы разглядеть его в одну строку, а затем разобрать его с помощью обратных косых черт.
Ответ 2
Проблема уже сообщалась разработчикам GNU make make:
Как упоминает Филипп, это намеренное/задокументированное поведение. Я рекомендую использовать "include", а не eval; попросите script записать файл, затем включите этот файл.
ДОБАВЛЕНО: Там обходной путь! Здесь образец GNUmakefile (замените 8 пробелов на вкладки, да, после define newline) есть две пустые строки: