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 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.