Можно ли заставить GNU Make следовать символическим ссылкам в правилах? - PullRequest
0 голосов
/ 16 февраля 2019

У меня большой проект, который использует GNU Make для сборки.Некоторые правила зависят от символических ссылок, а другие правила имеют цели, которые являются файлами, на которые ссылаются символические ссылки.

Вот простой пример того, о чем я говорю:

# assume the following symlink exists s-b2 -> f-b2

f-b1 :
    touch f-b1

f-b2 : f-b1
    touch f-b2

f-b3 : s-b2
    touch f-b3

Поведение Iвидим, что последнее правило, которое зависит от символической ссылки, не полностью связано с более ранними правилами.Например, обновления более ранних файлов не приводят к повторной оценке более позднего правила.Вы можете увидеть подробные ошибки этого и попробовать сами с этим проектом github .

Есть ли какой-нибудь способ заставить make следовать символическим ссылкам при вычислении зависимостей правила?

1 Ответ

0 голосов
/ 17 мая 2019

Если вы ничего не делаете с символической ссылкой, попробуйте просто прикоснуться к этой ссылке?

all : f-b3

init : clean
        ln -s -f f-b2 s-b2

clean :
        -rm f-* s-*

f-b1 :
    touch f-b1 # not necessarily just touch in real makefile

f-b2 : f-b1
    touch f-b2

s-b2 : f-b2
    touch s-b2 # would be just this in real makefile

f-b3 : s-b2
    touch f-b3

Пример результата:

$ make init
rm f-* s-*
ln -s -f f-b2 s-b2
$ make
touch f-b1
touch f-b2
touch s-b2
touch f-b3
$ touch f-b1
$ make
touch f-b2
touch s-b2
touch f-b3
$ touch f-b2
$ make
touch f-b3
...