2016-06-09 5 views
0

Я запускаю длинный скрипт сборки, который компилирует много проектов, и для большинства построек make обычно возвращается с make: Nothing to be done for 'all', что хорошо, потому что я не меняю так много кода на каждом строить. Однако сценарий по-прежнему занимает много времени, потому что он вызывает сценарий autotools configure для каждого проекта и некоторые другие скрипты.Пропуск конфигурации проектов, которые не нуждаются в компиляции

Я где-то читал, что make использует временные метки для проверки, нужно ли его строить.

Есть ли способ спросить Make, нужно ли его построить или нет, прежде чем вызывать скрипт configure? Или, может быть, еще один способ предотвратить переконфигурирование всех проектов?

+1

Как именно выполняется 'configure'? Это звучит так, как будто он не должен запускаться как часть Makefile или что он должен иметь зависимость, чтобы предотвратить его запуск, когда это не нужно. – chepner

+0

Вы правы в скрипте configure. Однако есть и другие скрипты, которые я хотел бы отключить, если нет необходимости в компиляции этого проекта. Отредактировал вопрос – Nitay

+1

Ну, то же самое. Кажется, что ваш Makefile безоговорочно выполняет некоторые вещи, которые действительно должны быть назначены зависимостям, чтобы 'make' знал, когда им не нужно запускать. – chepner

ответ

3

После того, как вы сконфигурировали каждый проект один раз, вам не нужно запускать каждый скрипт configure, если только эти скрипты configure не изменяются, или у вас есть основания полагать, что результаты теста будут изменены. При необходимости вы можете запустить config.status вместо этого, чтобы воссоздать выходные файлы без повторного запуска всех тестов. Если вы можете быть уверены, что выходные файлы не нужно воссоздавать, то вы можете просто запустить make.

Кроме того, если вы используете Automake в сочетании с Autoconf, то ваша Makefiles построена с инструментальным, который определяет, когда configure «s источник m4, как правило, configure.ac, изменились, поэтому требуется реконфигурация. Пока остается Makefile, созданный Automake-based configure, вы можете просто запустить make, и он пойдет правильно. Если отсутствует Makefile, вам необходимо запустить configure или config.status.

Кроме того, вы можете использовать общий кэш-файл для всех ваших скриптов configure, указав этот файл для каждого из них с помощью опции --config-cache. Это должно сократить время, затрачиваемое каждым сценарием configure, избегая избыточного тестирования.