Перейти к содержанию
    

Раздельная компиляция

Собственно, как в Keil можно сделать компиляцию только изменившихся файлов вместо компиляции всего проекта целиком? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, artemkad said:

Собственно, как в Keil можно сделать компиляцию только изменившихся файлов вместо компиляции всего проекта целиком? 

Да, для этого жмите кнопку F7 (Project->Build) вместо полной пересборки Project->Rebuild.

Разумеется, если есть изменения еще и в h/hpp файлах, то будут пересобраны все C/C++ файлы, куда эти h/hpp файлы инклудятся.

 

Также можно компилить любой один исполняемый файл (удобно при первичной сборке и устранения вороха ошибок) - Project->Translate (CTRL+F7).

Работает  только для активного C/C++ файла. Будет осуществлять ТОЛЬКО КОМПИЛЯЦИЮ этого файла (со всеми его инклудами само собой).

 

Keil очень любит многоядерные современные процы, т.е. одновременно запускает столько процессов компиляции разных файлов, сколько ядер (потоков) имеет проц.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, Forger сказал:

Да, для этого жмите кнопку F7 (Project->Build)

Если-бы все было столь очевидно, вопроса бы не возникло. Так не работает. По F7 перекомпилируется весь проект со всеми включенными туда библиотеками включая все подключенные HAL-овские. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 minutes ago, artemkad said:

По F7 перекомпилируется весь проект со всеми включенными туда библиотеками включая все подключенные HAL-овские. 

А какая версия Keil?

Ибо у меня все работает как надо на всех не самых старинных версиях keil. 

На всякий случай спрошу: у вас случаем нет нигде #include "некий C/C++" файл?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 минуту назад, Forger сказал:

А какая версия Keil?

uVision V5.24.2.0

 

22 минуты назад, Forger сказал:

На всякий случай спрошу: у вас случаем нет нигде #include "некий C/C++" файл?

Один сишный файл так подключен.  А что, Keil такое не переваривает? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, artemkad said:

Один сишный файл так подключен. 

Он что, всего один в проекте?

Покажите дерево подключенных исходников проекта?

Quote

А что, Keil такое не переваривает? 

Keil вообще не "переваривает" файлы, он их скармливает сначала препроцессору, чтобы тот собрал единые жирные с/c++ файлы (учитывая все #include), а уже потом эти "жирные" исходники он пропускает через компилятор.

После чего формируются объектные obj файлы, на основании которых уже начинается работа линковщика, который запускается в самом конце процесса сборки.

Для препроцессора #include означает ВКЛЮЧИТЬ текст одного файла в место, где объявлено это включение. Тут нет никакого деления на исполняемые или нет.

Все сильно зависит от ДЕРЕВА исполняемых файлов проекта. Покажите его (окно Project).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 минут назад, Forger сказал:

Он что, всего один в проекте?

Ну, по-факту Си-шных два. Плюс присобаченные сторонние библиотеки

13 минут назад, Forger сказал:

Покажите дерево подключенных исходников проекта?

При попытке второй файл прикомпилировать рядом выглядит так:

tree.thumb.jpg.bfeb703a5473d3295b552f9db456a83e.jpg

17 минут назад, Forger сказал:

Keil вообще не "переваривает" файлы, он их скармливает сначала препроцессору,....

Я в курсе как должна работать среда. Главный вопрос - почему вместо того, что-бы прилинковать не измененные файлы Keil все файлы компилирует заново.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, artemkad said:

Главный вопрос - почему вместо того, что-бы прилинковать не измененные файлы Keil все файлы компилирует заново.

 

А случаем у вас не стоит галочки "Cross-Module Optimization" в настройках проекта?

Полагаю и компилятор выбран старый - v5 (там же в настройках проекта)?

См. вкладку Target

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, artemkad said:

Галочка не стоит. Компилятор выбран v5.

 

Там же в настройках проекта во вкладке Output не должна стоять галка Create Batch File. Нет и ее?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 минут назад, Forger сказал:

Там же в настройках проекта во вкладке Output не должна стоять галка Create Batch File. Нет и ее?

Она была и её снятие похоже решило проблему. 

А что она делает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, artemkad said:

Она была и её снятие похоже решило проблему. 

А что она делает?

Если открыть гугль по строке поиска "keil always rebuild", то первая же ссылка укажет на эти две галки )

Оттуда я и нашел эту подсказку )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...