Jump to content
    

Инкрементальная сборка

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 делался ДО анализа?

Share this post


Link to post
Share on other sites

50 минут назад, razrab83 сказал:

В pre build вызываю скирп, который делает автоинкрементен версии

А зачем делать "автоинкремент версии" если ничего не поменялось?

Share this post


Link to post
Share on other sites

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 by razrab83

Share this post


Link to post
Share on other sites

5 hours ago, razrab83 said:

Номер версии хранится в about.h, который включен в b1.c и b2.c.

about.h включен в проект как файл? Или упоминается только в *.с ?

Share this post


Link to post
Share on other sites

Включен в проект.

В 13.11.2024 в 08:03, razrab83 сказал:

Т.е. после изменения файлов a*.c нужно сделать инкремент версии и пересобрать a*.c и b*.c. IAR делает инкремент и пересобирает только a*.c

и если после сборки ни чего не менять и тут же запустить ещё раз сборку - пересобрётся b1.c и b2.c, т.к. about.h на предыдущей сборке был изменён, но b*.c не  были пересобраны. 

Edited by razrab83

Share this post


Link to post
Share on other sites

В IAR 9 есть особенности работы с pre-build и анализом инкрементальных изменений, которые вызывают проблемы в некоторых сценариях, подобных вашему. Основная проблема заключается в том, что IAR выполняет анализ изменений до запуска команды pre-build, что означает, что изменения, внесенные в исходные файлы с помощью скриптов pre-build, не учитываются в процессе инкрементальной сборки. Это приводит к тому, что измененные файлы могут не пересобираться, так как IAR считает их актуальными. 

На текущий момент  обсуждаются такие особенности, но решения для последовательности выполнения анализа после pre-build от IAR не предоставлено. Некоторые разработчики предлагают обходные пути. Например можно использовать командную строку для более полного контроля над последовательностью сборки.

Share this post


Link to post
Share on other sites

В 14.11.2024 в 08:41, juvf сказал:

В IAR 9 есть особенности работы с pre-build

Очень странно. За частую pre-build нужен для внесения изменений в исходный код до сборки. Генератор конфигураций, генератор текста, генератор картинок, всякие git/svn push, автоинкримент и т.п. Т.е. перед сборкой нужно внести автоматически изменения в исходный код. Но такое поведение pre-build в иаре напрочь убивает этот функционал. IDE IAR и так не блещет своим функционалом, отстаёт в развитии лет на 20, так ещё и сделали шаг назад лет на 10. Печально. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...