Как ускорить компиляцию проекта на С++ под UNIX |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6704-й день
![]() |
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
Как ускорить компиляцию проекта на С++ под UNIX |
![]()
Пост
#1
|
|
Репутация: ![]() ![]() Группа: Сообщений: 0 С нами с: -- Предупреждение: (0%) ![]() |
Есть проект на С++ состоящий из более чем 60 файлов. Компиляция занимает около минуты. Можно ли как-то это ускорить?
Я знаю что есть возможность компилировать только изменённые файлы, но так-как проект для университета, и я должен послать source code на автоматическую проверку, этот вариант не подходит. Компиляция командой g++ *.cpp занимает около минуты Компиляция командой make, с простеньким makefile, занимает примерно пол минуты. Может можно как-то усовершенствовать makefile. |
![]() ![]() |
skeletor |
Пост
#2
|
Репутация: ![]() ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 613 С нами с: 31-March 06 ![]() |
Я знаю что есть возможность компилировать только изменённые файлы Ну так и есть. Это ведь С! Компилишь только изменённые файлы, потом уже в конечном итоге собираешь. Насчёт ускорить - знаю только ламерский ответ - пересмотреть исходники, и может заменить участки кода на быстрее обрабатываемые. |
troorl |
Пост
#3
|
Незарегистрированный ![]() |
Ну так и есть. Это ведь С! коллега, это С++ |
skeletor |
Пост
#4
|
Репутация: ![]() ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 613 С нами с: 31-March 06 ![]() |
|
troorl |
Пост
#5
|
Незарегистрированный ![]() |
Ну и? Разве в С++ нельзя отдельно компилить файлы, а потом слинковать проэкт, коллега? Вообще-то make (я пользуюсь qmake, но думаю с make то же самое) компилит только изменённые файлы по умолчанию. Коллега? |
skeletor |
Пост
#6
|
Репутация: ![]() ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 613 С нами с: 31-March 06 ![]() |
Всё правильно, коллега.
![]() |
psw |
Пост
#7
|
Репутация: ![]() ![]() Дух Группа: Пользователи Сообщений: 24 С нами с: 5-July 06 ![]() |
Идея выше была правильна: компилировать только те файлы которые изменились.
Для это надо настроить Makefile, что бы он компилил все .cpp в объектные файлы и настроить зависимости (т.е. какие файлы должны компилироваться раньше других). Например, вот такой Makefile: # --- start of AMkefile ------ mycoolprog: mypart1.o mypart2.o g++ -o mycoolprog mypart1.o mypart2.o mypart1.o: mypart1.cpp mypart2.h g++ -c mypart1.cpp mypart2.o: mypart2.cpp mypart2.h g++ -c mypart2.cpp # --- end of Makefile Сначала make проверит не изменились ли mypart2.cpp mypart2.h и если да - пересоздат mypart2.o. Потом проверит на наличие изменений mypart1.cpp mypart2.h и если да - пересоздаст mypart1.o И в последнюю очередь соберет исполняемый файл mycoolprog. Если исходники не модифицировались, объектные файлы будут использоваться повторно. |
dimasi |
Пост
#8
|
Репутация: ![]() ![]() Дух Группа: Пользователи Сообщений: 23 С нами с: 25-March 06 ![]() |
Есть еще такое средство, как KJam.
http://www.oroboro.com/kjam/docserv.php Я его сам еще в деле не пробывал, но , читал в документации, что оно позиционируется, как "fastest build tool". А вот тут, сравнивается его производительность с другими системами сборки: http://www.oroboro.com/kjam/docserv.php/page/doc_perf |
![]() ![]() |
![]() |
Упрощённая версия | Сейчас: 22nd July 2024 - 14:27 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |