|
|
  |
(Make | Rebuild ) && conditional_compiling |
|
|
|
Nov 16 2007, 09:47
|
Местный
  
Группа: Участник*
Сообщений: 418
Регистрация: 20-08-07
Пользователь №: 29 930

|
Цитата(Dog Pawlowa @ Nov 16 2007, 12:11)  Часто использую вариант нескольких проектов в одном рабочем пространстве. Проекты используют в основном одни и те же файлы, условие компиляции определено в свойствах проекта. При переходе с проекта на проект файлы не компилируются автоматически. Обычно по понедельникам бывает сложно понять, что происходит  Теперь это случилось в пятницу Может, это дело как-то можно автоматизировать? Перешел с проекта на проект - всегда первый раз запускается компиляция всех файлов. Или чтобы предупреждение вываливалось. Кнопочка/опция Rebuild All - должна удалить все объектники в проэкте и выполнить построение с нуля... Просто Rebuild должен проверить даты создания исполняемого кода и перелинковать/перекомпидировать, если есть более поздние исходники и/или объектные файлы. Более поздние файлы в окне пректа отмечаются красными звездами... Все сказанное - об IAR... При дефолтных установках.
Сообщение отредактировал Николай Z - Nov 16 2007, 09:48
|
|
|
|
|
Nov 16 2007, 11:55
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(dxp @ Nov 16 2007, 13:33)  Вам решение в рамках оболочки IAR EW надо или вообще? Работаю в оболочке. Любое не требующее особых усилий решение, и сообщения достаточно. Давным давно, еще работая на Паскале, после определенного этапа переходил на запуск bat-файла, в котором и перекомпилировалось все, и прошивки готовились, чтобы гарантированно избежать неучтенных изменений установок среды. В принципе, самому нужно быть собраннее, но перерывы отрицательно влияют. Наверно, можно поиграться с определениями, чтобы линкер выдавал ошибку, если файлы компилировались для разных условий.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Nov 16 2007, 14:10
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(Dog Pawlowa @ Nov 16 2007, 17:55)  Работаю в оболочке. Любое не требующее особых усилий решение, и сообщения достаточно. Давным давно, еще работая на Паскале, после определенного этапа переходил на запуск bat-файла, в котором и перекомпилировалось все, и прошивки готовились, чтобы гарантированно избежать неучтенных изменений установок среды. В принципе, самому нужно быть собраннее, но перерывы отрицательно влияют.
Наверно, можно поиграться с определениями, чтобы линкер выдавал ошибку, если файлы компилировались для разных условий. Что-то не улавливаю всю глубину проблемы - если любой из исходников изменен, либо измены опции проекта, то оболочка должна сама пересобирать все, что надо - если изменен исходник, то будет перекомпилирован этот исходник с последующей сборкой (линковкой), если опции проекта - то весь проект целиком. Вы имеете в виду, что она (оболочка) этого не делает? Если так, то это баг. Или в чем проблема? Сам в оболочке не собираю проекты, использую ее только в качестве отладчика.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Nov 16 2007, 14:48
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(dxp @ Nov 16 2007, 18:10)  Что-то не улавливаю всю глубину проблемы - если любой из исходников изменен, либо измены опции проекта, то оболочка должна сама пересобирать все, что надо - если изменен исходник, то будет перекомпилирован этот исходник с последующей сборкой (линковкой), если опции проекта - то весь проект целиком. Вы имеете в виду, что она (оболочка) этого не делает? Если так, то это баг. Или в чем проблема?
Сам в оболочке не собираю проекты, использую ее только в качестве отладчика. Глубина небольшая: Есть два проекта А и Б, в каждый входят файлы 1 и 2. 1. Работали в проекте А, откомпилировали файлы 1 и 2. 2. Переключили на проект Б. 3. Изменили файл 1. 4. Запустили make - файл 1 будет откомпилирован заново, файл 2 не будет : - Он не изменялся - свойства проектов не изменялись 5. Наблюдаем странные результаты, поскольку в файле 2 было что-то типа: #ifdef PROJ_A char configuration = PROJ_A_CONFIG; #endif #ifdef PROJ_B char configuration = PROJ_B_CONFIG; #endif 6. Чешем затылок 5 минут, и со словом "Эврика" клянем себя, все среды и проч. Теперь вопрос - где баг?
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Nov 16 2007, 15:21
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Dog Pawlowa @ Nov 16 2007, 16:48)  Теперь вопрос - где баг? Было подобное когда объектники разных конфигураций одного проекта складывал в одну директорию. Надо для каждого из проектов указать свою папку для объектников. Тогда в этой папке для проекта 1 будет объектник файла Б скомпилированный с установками проекта 1, а в папке проекта 2 он же, но с настройками проекта 2. И в batch build добавить оба проекта, чтобы не забыть пересобрать какой-то из них при изменении общих файлов.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 16 2007, 16:42
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Сергей Борщ @ Nov 16 2007, 19:21)  Было подобное когда объектники разных конфигураций одного проекта складывал в одну директорию. Надо для каждого из проектов указать свою папку для объектников. Тогда в этой папке для проекта 1 будет объектник файла Б скомпилированный с установками проекта 1, а в папке проекта 2 он же, но с настройками проекта 2. И в batch build добавить оба проекта, чтобы не забыть пересобрать какой-то из них при изменении общих файлов. Спасибо! В эту сторону и не смотрел. В целом работает, правда наблюдаются некоторые мелкие глюки среды (MSP 4.10)- - компилирую проект А - ОК, - компилирую проект Б - после компиляции красные точки изменений опять выставляются для всех файлов. - компилирую проект Б повторно - они гаснут, даже без компиляции, ну и потом все нормально.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|