Мне было интересно, есть ли способ указать входные и выходные файлы скрипта python для создания, чтобы make мог использовать свои магические значения c в зависимости от состояния входного файла.
Конечно. По своей сути make
- очень простая и общая система. Он определяет формат для выражения предпосылок для построения различных целей и для выражения машинно-управляемых инструкций для фактического построения этих целей из их назначенных предпосылок. Учитывая эту информацию, make
выясняет, какие рецепты, если таковые имеются, выполнить для создания запрошенной цели или для ее обновления в отношении ее прямых и косвенных зависимостей.
Make
ничего не знает о характер целей и предпосылок, отличных от того, что они представляют собой файлы с метками времени (или так, как предполагается). Make
, разработанный с учетом требований к созданию программного обеспечения, он поставляется с некоторыми встроенными правилами, предназначенными для создания программ из исходного кода, написанного на нескольких выбранных языках, но это удобная функция, а не ограничение.
Если вы хотите обеспечить создание файла с именем info.hpp
на основе другого файла с именем info.xml
, тогда info.hpp
является целью, а info.xml
является обязательным условием (a). Тогда будет уместным правило в этом духе:
info.hpp: info.xml
python update_info.py info.xml
Вообще говоря, лучше по возможности избегать повторения целевых и обязательных названий в рецепте. Вместо этого используйте соответствующие автоматические c make
переменные, такие как $^
, которые представляют отдельные элементы списка предварительных условий:
info.hpp: info.xml
python update_info.py $^
В некоторых случаях может потребоваться Python наличие сценария также является обязательным условием, поскольку изменения в сценарии могут привести к тому, что он будет выводить значимо разные выходные данные из одного и того же ввода.