razrab83 26 November 12, 2024 Posted November 12, 2024 · Report post IAR 9.5. Заметил такую особенность IAR-а: При запуске сборки IAR делает 1)анализ - кого пересобирать, а кого нет. Потом.... 2) ПОТОМ IAR запускает custom pre build, 3)пересборка только тех файлов, которые были отмечены на шаге 1. 4)линковка 5) custom post build В pre build вызываю скирп, который делает автоинкрементен версии (+ автогенерация всяких картинок, текста). После этого необходимо пересобрать несколько объектников и слинковать. Но, на шаге 1 IAR определил, что ни чего не поменялось, что объектники свежее исходников и запускает pre buid. Pre build меняет исходники, но иару на это уже фиолетово. Иар использует старые объектники. Даже если в pre buid удалить *.o, то ИАР не будет перекомпилировать удаленные объектники и линкер выдаст ошибку. Как решить проблему? Можно делать Rebuild All - но это каждый раз полность пересборку. Вроде раньше ИАР делал prebuild, а потом Инкрементальную сборку. А в 9-ке делает анализ - что нужно пересобрать, а что нет, потом пребилд и потом по результатам анализа сборка. Можно сделать так, чтобы pre build делался ДО анализа? Quote Share this post Link to post Share on other sites More sharing options...
jcxz 342 November 12, 2024 Posted November 12, 2024 · Report post 50 минут назад, razrab83 сказал: В pre build вызываю скирп, который делает автоинкрементен версии А зачем делать "автоинкремент версии" если ничего не поменялось? Quote Share this post Link to post Share on other sites More sharing options...
razrab83 26 November 13, 2024 Posted November 13, 2024 (edited) · Report post 16 часов назад, jcxz сказал: А зачем делать "автоинкремент версии" если ничего не поменялось? В pre build вызываю скирп, который делает автоинкрементен версии автогенерацию всяких картинок, текста. Так нормально? Где я сказал, что в проекте ни чего не поменялось? Заменил картинку. Картинку в си упаковывает скрипт, который нужно вызвать до компиляции. Этот скрипт вызывает pre build (в IAR <= 8). Что касательно "автоинкрементен версии" - поменял файлы a1.c, a2.c, a3.c. Номер версии хранится в about.h, который включен в b1.c и b2.c. Т.е. после изменения файлов a*.c нужно сделать инкремент версии и пересобрать a*.c и b*.c. IAR делает инкремент и пересобирает только a*.c Edited November 13, 2024 by razrab83 Quote Share this post Link to post Share on other sites More sharing options...
_4afc_ 46 November 13, 2024 Posted November 13, 2024 · Report post 5 hours ago, razrab83 said: Номер версии хранится в about.h, который включен в b1.c и b2.c. about.h включен в проект как файл? Или упоминается только в *.с ? Quote Share this post Link to post Share on other sites More sharing options...
razrab83 26 November 14, 2024 Posted November 14, 2024 (edited) · Report post Включен в проект. В 13.11.2024 в 08:03, razrab83 сказал: Т.е. после изменения файлов a*.c нужно сделать инкремент версии и пересобрать a*.c и b*.c. IAR делает инкремент и пересобирает только a*.c и если после сборки ни чего не менять и тут же запустить ещё раз сборку - пересобрётся b1.c и b2.c, т.к. about.h на предыдущей сборке был изменён, но b*.c не были пересобраны. Edited November 14, 2024 by razrab83 Quote Share this post Link to post Share on other sites More sharing options...
juvf 23 November 14, 2024 Posted November 14, 2024 · Report post В IAR 9 есть особенности работы с pre-build и анализом инкрементальных изменений, которые вызывают проблемы в некоторых сценариях, подобных вашему. Основная проблема заключается в том, что IAR выполняет анализ изменений до запуска команды pre-build, что означает, что изменения, внесенные в исходные файлы с помощью скриптов pre-build, не учитываются в процессе инкрементальной сборки. Это приводит к тому, что измененные файлы могут не пересобираться, так как IAR считает их актуальными. На текущий момент обсуждаются такие особенности, но решения для последовательности выполнения анализа после pre-build от IAR не предоставлено. Некоторые разработчики предлагают обходные пути. Например можно использовать командную строку для более полного контроля над последовательностью сборки. 1 Quote Share this post Link to post Share on other sites More sharing options...
razrab83 26 November 15, 2024 Posted November 15, 2024 · Report post В 14.11.2024 в 08:41, juvf сказал: В IAR 9 есть особенности работы с pre-build Очень странно. За частую pre-build нужен для внесения изменений в исходный код до сборки. Генератор конфигураций, генератор текста, генератор картинок, всякие git/svn push, автоинкримент и т.п. Т.е. перед сборкой нужно внести автоматически изменения в исходный код. Но такое поведение pre-build в иаре напрочь убивает этот функционал. IDE IAR и так не блещет своим функционалом, отстаёт в развитии лет на 20, так ещё и сделали шаг назад лет на 10. Печально. Quote Share this post Link to post Share on other sites More sharing options...