Makefile "перечитал" вопрос - PullRequest
       0

Makefile "перечитал" вопрос

1 голос
/ 26 апреля 2011

Итак, я создаю систему makefile, очень похожую на ядро ​​Linux, работающее в Kconfig.

То есть пользователь набирает «make menuconfig», и он создает механизм, управляемый меню, для включения / выключения модулей сборки. Довольно легко, потому что я украл большую часть из Linux и с открытым исходным кодом.

Единственная проблема, с которой я столкнулся, - перечитать только что созданный файл .config.

Так что происходит, что "make menuconfig" делает следующее:

.PHONY: menuconfig
menuconfig: $ {SCRIPTS_DIR} / config / mconf check_config $ {TOP} /gnet.kconfig
@ $ {SCRIPTS_DIR} / config / mconf gnet.kconfig

$ {SCRIPTS_DIR} / config / mconf использует gnet.kconfig в качестве начальной конфигурации, а затем создает файл .config в каталоге $ {TOP}.

То, что я хочу сделать, - это переоценить .config, чтобы я мог извлечь из него некоторые параметры и узнать, изменил ли пользователь что-либо существенное.

Я попробовал следующее без особой удачи.

.config: menuconfig
cp .config default-config / arm-config

Нечто подобное ... но .config старый, а не новый.

Надеюсь, я объяснил это достаточно хорошо.

Спасибо. -stv

1 Ответ

1 голос
/ 27 апреля 2011

Как заметила Бета, вы пропустили некоторые важные вещи.Как цель .config связана с menuconfig?Эти два вообще связаны?Вы уверены, что второй рецепт выполняется?
Когда вы запускаете make menuconfig, цель menuconfig становится конечной целью, которую make попытается обновить.Поскольку это цель PHONY, ее рецепт всегда будет выполняться.Прежде чем он это сделает, проверьте, существуют ли его зависимости и актуальны ли они.Как я уже сказал, вы не показываете связь между целями menuconfig и .config, так что может привести к выполнению рецепта для .config?

По связанной проблеме ваши правила таковы:не говорить правду, чтобы сделать.Ваше первое показанное правило создает файл .config, поэтому он должен быть в списке целей для этого правила.Ваше второе правило зависит от существования этого файла, поэтому оно должно быть среди зависимостей здесь, а затем создает файл default-config/arm-config, который, таким образом, должен быть целью этого правила.

.PHONY: menuconfig
menuconfig .config: ${SCRIPTS_DIR}/config/mconf check_config ${TOP}/gnet.kconfig
      @${SCRIPTS_DIR}/config/mconf gnet.kconfig
default-config/arm-config: .config
      cp .config default-config/arm-config
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...