2011-04-20 1 views
4

У меня есть проект с autotools: automake, autoconf.autotools: force make not to rebuild configure/Makefile

Я хочу запретить make из переделанных файлов configure, Makefile.in и т. Д .; просто чтобы скомпилировать работу.

Некоторые файлы редактируются вручную, и я знаю, что я не должен этого делать. (Или проект был обновлен из CVS со всеми сгенерированными файлами, хранящимися в CVS). Но на данный момент у меня нет правильной версии autotools.

Что должно быть модифицирования времена этих файлов (которые должны быть старше/новее):

aclocal.m4 
configure.in 
confdb/ax_prefix_config_h.m4 
Makefile.am 
Makefile.in 
Makefile 
configure 
config.status 

Или: какая последовательность команд touch я должен сделать, чтобы достичь своей цели?

ответ

7

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

Затем здесь происходят две отдельные вещи: config.status и Makefile созданы во время сборки. Трудно предотвратить их переделку во время сборки, если вы не сделаете свои временные метки более новыми.

Другие файлы создаются различными автотюшками. В последних версиях Automake не создаются правила по умолчанию, которые автоматически переделывают их. В зависимости от вашего пакета вы можете использовать опцию configure--disable-maintainer-mode. Документация Automake содержит более интересную информацию об этом параметре.

Один трюк, который я иногда использую с пакетом, что я много не знаю о том, что или имеет довольно перепутались систему сборки, чтобы запустить что-то вроде

make all AUTOCONF=: AUTOHEADER=: AUTOMAKE=: ACLOCAL=: 

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

+0

Я отредактировал 'configure' вручную, а также отредактировал' configure.in'. Но у меня нет нужных версий autotools, поэтому редактирование «configure» было похоже на то, что оно восстанавливается с помощью правильного инструмента. Я хочу не использовать разные autotools, потому что проект находится под cvs, и он хранится со всеми скриптами (configure, * .m4, * .in). – osgx

+0

Ох, '--disable-maintainer-mode' - спасибо.К сожалению, использование проекта не automake, но simplemake (Makefile.sm), который не имеет '--disable-maintainer-mode' – osgx

+0

. Более новая версия проекта содержит несколько сценариев' 'configure''. Top configure имеет '--disable-maintainer-mode', и он работает, но некоторые внутренние' configure 'не имеют' --disable-maintainer-mode'. – osgx

2
touch confdb/*.m4 
touch configure.in 
touch *.m4 
touch *.am 
touch Makefile.in */Makefile.in 
touch *config.h.in */*config.h.in 
touch configure 
touch config.status 
touch config.h 
touch Makefile 

Проблемы с Automake & Сорта описаны здесь http://www.gnu.org/s/hello/manual/automake/CVS.html

+0

Не забудьте принять свой ответ, поэтому вопрос не выглядит безответным. –

1

Попытка явно указать make эти файлы не должны быть переделаны, с помощью командной строки

$ make -o configure -o Makefile.in 

или с помощью MAKEFLAGS

$ MAKEFLAGS="-o configure -o Makefile.in" make 

excerpt от GNU Make Руководство

‘-o file’ 
‘--old-file=file’ 
‘--assume-old=file’ 
Do not remake the file file even if it is older than its prerequisites, and do not remake 
anything on account of changes in file. Essentially the file is treated as very old and 
its rules are ignored. See Avoiding Recompilation of Some Files. 

Если ваш шаблон autotools correct tly использует $(MAKE) для поддиректоров, проблем не должно быть.

 Смежные вопросы

  • Нет связанных вопросов^_^