Как ускорить компиляцию проекта на С++ под UNIX |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6799-й день
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
Как ускорить компиляцию проекта на С++ под UNIX |
Aug 28 2006, 2:34
Пост
#1
|
|
Репутация: Группа: Сообщений: 0 С нами с: -- Предупреждение: (0%) |
Есть проект на С++ состоящий из более чем 60 файлов. Компиляция занимает около минуты. Можно ли как-то это ускорить?
Я знаю что есть возможность компилировать только изменённые файлы, но так-как проект для университета, и я должен послать source code на автоматическую проверку, этот вариант не подходит. Компиляция командой g++ *.cpp занимает около минуты Компиляция командой make, с простеньким makefile, занимает примерно пол минуты. Может можно как-то усовершенствовать makefile. |
skeletor |
Aug 28 2006, 7:48
Пост
#2
|
Репутация: 145 Постоялец Группа: Пользователи Сообщений: 1 613 С нами с: 31-March 06 |
Я знаю что есть возможность компилировать только изменённые файлы Ну так и есть. Это ведь С! Компилишь только изменённые файлы, потом уже в конечном итоге собираешь. Насчёт ускорить - знаю только ламерский ответ - пересмотреть исходники, и может заменить участки кода на быстрее обрабатываемые. |
troorl |
Aug 28 2006, 8:07
Пост
#3
|
Незарегистрированный |
Ну так и есть. Это ведь С! коллега, это С++ |
skeletor |
Aug 28 2006, 8:17
Пост
#4
|
Репутация: 145 Постоялец Группа: Пользователи Сообщений: 1 613 С нами с: 31-March 06 |
|
troorl |
Aug 28 2006, 8:25
Пост
#5
|
Незарегистрированный |
Ну и? Разве в С++ нельзя отдельно компилить файлы, а потом слинковать проэкт, коллега? Вообще-то make (я пользуюсь qmake, но думаю с make то же самое) компилит только изменённые файлы по умолчанию. Коллега? |
skeletor |
Aug 28 2006, 8:38
Пост
#6
|
Репутация: 145 Постоялец Группа: Пользователи Сообщений: 1 613 С нами с: 31-March 06 |
Всё правильно, коллега.
|
psw |
Oct 2 2006, 14:29
Пост
#7
|
Репутация: 1 Дух Группа: Пользователи Сообщений: 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 |
Oct 8 2006, 15:34
Пост
#8
|
Репутация: 2 Дух Группа: Пользователи Сообщений: 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 |
Упрощённая версия | Сейчас: 25th October 2024 - 16:49 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |