GNUmakfile с тем же выводом, но другой зависимостью

#gnu-make

#gnu-make

Вопрос:

Не уверен, как мы можем этого добиться, у меня есть два правила с одинаковым выводом def.out, но это зависит от двух разных файлов (НЕ одновременно), одно из которых abc.xml а другой def.xml . В файле makefile, когда я вызываю def.out, как он узнает, вызывать первое правило или 2-е правило? Опять же, это определение не зависит от abc.xml и def.xml в то же время.

определение выхода: abc.xml ……

определение выхода: def.xml ……

Комментарии:

1. Сначала вы должны определить для себя (и для нас), как вы узнаете, какая зависимость должна использоваться для создания def.out. Вы не можете заставить make сделать это, если сначала не знаете, как это сделать. Тогда мы можем попытаться помочь.

Ответ №1:

Одно из предложений заключается в том, чтобы не иметь двух одинаковых целевых объектов.

def_abc.out:

и

def_def.out:

… потому что вы должны сообщить утилите make, какое правило вы хотите использовать, не так ли? Или, если вы думаете, что система сможет разобраться с этим самостоятельно, тогда используйте одну цель, но «эффективно два действия».

def.out : (действие, которое проверяет, какое это время) (если это «abc.xml время») создайте def_abc.out (иначе) создайте def_def.out

Вы можете добавлять код по своему усмотрению, чтобы переименовывать объекты в нужное время.

Но вы спросили «как он узнает, что нужно вызывать первое правило или второе правило?» и мой ответ таков: «вы либо сообщаете ему, когда вызываете его, либо сообщаете, как узнать, когда вы кодируете makefile».