Я изучаю влияние на мой маршрутизатор различных изменений источника на OpenWRT.
Я клонировал тег соответствующего выпуска в новую локальную ветку с помощью git.Я планирую взломать код и посмотреть, нравятся ли мне какие-либо изменения - если я это сделаю, я сделаю официальные патчи для них позже.Сборка компилируется счастливо.Но так как я изменяю тест-компиляцию, мне неясно, как минимизировать работу, которую make
должна выполнить, чтобы перекомпилировать ее с любыми изменениями.
Я знаю, что make
предназначен длясвести к минимуму перекомпиляцию путем обнаружения файлов, которые необходимо загрузить, по сравнению с уже загруженными / существующими файлами, и файлы, измененные по сравнению с файлами без изменений.Но я не могу понять, какие make
команды нужно выполнить (make clean / make distclean / other), чтобы выполнить очистку после компиляции для следующей компиляции, без учета устаревших артефактов из предыдущего запуска.
Пример:
- Я запускаю
make menuconfig
, настраиваю базовые варианты (нет смысла делать больше на этом этапе), затем make download
, затем make -j6 -V=sc -d --trace
(излишний и, вероятно, дублирующий, я знаю, но этоОК) - Если сборка работает, я получаю файл .squashfs в выходном каталоге.Yay!
- Теперь я хочу изменить патч в git dir.Или, возможно, измените несколько строк в некоторых из загруженных инструментов / файлов python в
build_dir
, которые были загружены / созданы предыдущим запуском.Например, make
загружает и создает файлы в ~/openwrt/build_dir/target-arm_cortex-a9_musl_eabi/hostapd-wpad-mini
, я их редактирую, а не добавляю патчи, потому что это проще для специального тестирования. (Я согласен, что я мог бы добавить исправления для последних и разрешить их повторную загрузку, но при перекомпиляции на разовой основе для тестирования мне проще + быстрее, если make
сохраняетранее загруженные версии и собирается из модифицированных версий без необходимости их повторной загрузки или создания патчей для них.) - Теперь я хочу перекомпилировать.Но я хочу быть уверен, что
make
заметит мои изменения в сценариях, загруженных инструментах и загруженных файлах данных, если таковые имеются, и создаст новую сборку, которая включает их, без необходимости повторной загрузки неизмененных файлов, удаления измененных файлов (поэтому яприходится каждый раз менять их с помощью патчей), и обязательно перезаписывать существующие выходные файлы.
Мне не совсем понятно, что make
обычно удаляет и проверяет, или как это было настроено специально для OpenWRT, поэтому я надеюсь, что вопрос действителен, как задано.
Какие команды я должен выполнить, чтобы убедиться, что моя новая сборка содержит изменения, но "принимает как должное" все найденные файлы, которые были найдены, были загружены, но восстанавливает что-либо на их основе, если они были отредактированы?