LINUX.ORG.RU

Передача параметров Makefile-у


0

0

Есть проект и к нему Makefile, в нем несколько подсистем к каждой из которых свой Makefile из главного вызываются как "make -C SubDir all"

Сами makefile-ы написаны таким образом, что могут принимать параметры из коммандной строки, то есть например делаем "make all SOME_VAR=VAL" и сборка идет с переопределенным (отностительно значения по-умолчанию указанного в самом Makefile) значеием SOME_VAR. Причем это переопределнное значение передается всем дочерним Makefile-ам.

Но сейчас число параметров выросло настолько, что коммандная строка становится очень длинной и хочется передать эти параметры через файл или еще как. Я пробовал вызывать верхний make так: "make -f override -f Makefile". В файле override находятся переопределения. Это работает до первого вызова make внутри главного Makefile-a, ему эти параметры уже не передаются.

Передавать через переменные среды нежелательно, так как необходимо делать несколько сборок подряд изменяя только некоторые параметры и не трогая остальные. А в этом случае нужно будет переменные среды чистить каждый раз.

И все это еще осложняется тем, что вызов это нужно делать из jython-a :), поэтому для меня был-бы идеальным вариант, при ктором настройки хранятся в отдельном файле, но нужно чтобы их было видно при любой вложенности вызовов make.

Немного сумбурно, но надеюсь понятно что нужно.

★★★★
Ответ на: комментарий от klalafuda

Невозможно. В том смысле, что править Makefile-ы нельзя. Это система тестирования - пробует собирать все с разными параметрами, поэтому она никак не должна влиять на сборку руками.

Решение вроде найдено. На тестовых примерах работает, на боевых еще не пробовал:

Вызывавем так: make -f Makefile MAKEFILES=over

over содержит записи вида "override SOME_VAR=VAL"

alexru ★★★★
() автор топика
Ответ на: комментарий от alexru

К сожалению приведенное решенипе не работает когда Makefile-ы подсистем находятся в своих каталогах, я проверял на файле в том-же каталоге и вызывал 'make -f submakefile' и в этом случае все работает. Странно.

alexru ★★★★
() автор топика
Ответ на: комментарий от tailgunner

Блин, спасибо :) Конечно отностительный :))

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