LINUX.ORG.RU

[вещества] make и симлинки

 


0

0
Представим себе такую ситуацию: из громадных сорсов некоей софтины надо собрать какую-нибудь одну либу или же бинарник.Для тестов или для какой-нибудь другой надобности.

Обычный порядок действий: пытаешься сделать make в каталоге /lib/blah и получаешь ошибку, потому что есть зависимость на /lib/common/communication, в результате чего приходится лезть туда, делать make там и проходить все зависимости "ручками".

Другой вариант: в /lib/blah делаются симлинки на каталоги, в которых лежат зависимости и в makefile дописываются команды на компиляцию и этих каталогов тоже. В результате произвольное место из исходников собирается со всеми зависимостями одним make-ом.

Вопрос: почему так не делают?

P.S. Про несовместимость с фс, не поддерживающими симлинки знаю, но не думаю, что они волнуют unix-only проекты.

★★
Ответ на: комментарий от KblCb
> А какие фс не поддерживают симлинки?

fat*, у ntfs эта возможность тоже не очень-то часто используется :)
gaa ★★
() автор топика
Ответ на: комментарий от gaa
>fat*, у ntfs эта возможность тоже не очень-то часто используется :)

Файлы .lnk со ссылкой на директорию? Возможно только драйверок надо налабать чтобы файловое API их понимало.

Absurd ★★★
()
Ответ на: комментарий от Absurd
> Файлы .lnk со ссылкой на директорию? Возможно только драйверок надо налабать чтобы файловое API их понимало.

У ntfs, емнип, есть нативная поддержка симлинков. Ну да не суть.

По существу вопроса есть какие-нибудь комментарии? Идея-то вроде хорошая, но я не могу понять, почему этого никто не использует.
gaa ★★
() автор топика
в нормальной системе сборки говоришь make что нужно в root директории и оно и ее зависимости сами собираются

например kbuild, cmake

anonymous
()
Ответ на: комментарий от anonymous
> в нормальной системе сборки говоришь make что нужно в root директории и оно и ее зависимости сами собираются

а мне не нужно make от рута, т.к. проект 5 часов компилится. Мне нужно пару библиотек из глубины проекта собрать.
gaa ★★
() автор топика
Ответ на: комментарий от BreadFan
> у нас в бывшей конторе было такое, но делалось не симлинками. если интересно, могу посмотреть как

оно понятно, как всё делалось:

deps: dep1 dep2
dep1:
        (cd depdir1; make)

Интересно, в чём подвох подхода с симлинками.
gaa ★★
() автор топика
потому что make в принципе неудобен и страшен. прогрессивное человечество давно перешло на jam, где такие штуки и тривиальны, и изначально поддерживаются.
anonymous
()
Ответ на: комментарий от trapezoid
А что я там должен увидеть? Другую систему сборки? Это, конечно, хорошо, но меня интересует в контексте данного топика только make.
gaa ★★
() автор топика
Ответ на: комментарий от gaa
это – набор мейкфайлов, специально сделанных так, чтобы можно было любую часть проекта пересобрать со всеми зависимостями.
trapezoid
()
Ответ на: комментарий от trapezoid
> это – набор мейкфайлов, специально сделанных так, чтобы можно было любую часть проекта пересобрать со всеми зависимостями.

Ладно. Но вопрос о том, есть ли подвох в симлинках, остаётся открытым.
gaa ★★
() автор топика
Ответ на: комментарий от gaa
>а мне не нужно make от рута, т.к. проект 5 часов компилится. Мне нужно >пару библиотек из глубины проекта собрать.

повторяю, говоришь make "что нужно" а оно собирает только то что нужно и его зависимости

а не все

anonymous
()
Ответ на: комментарий от anonymous
>> а мне не нужно make от рута, т.к. проект 5 часов компилится. Мне нужно >пару библиотек из глубины проекта собрать.

> повторяю, говоришь make "что нужно" а оно собирает только то что нужно и его зависимости


Отлично, но совершенно не имеет отношения к моему вопросу.
gaa ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.