Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6704-й день

Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua

 Как ускорить компиляцию проекта на С++ под UNIX

Aug 28 2006, 2:34
  
Пост #1



Репутация:     



Группа:
Сообщений: 0
С нами с: --
Предупреждение:
(0%) -----


Есть проект на С++ состоящий из более чем 60 файлов. Компиляция занимает около минуты. Можно ли как-то это ускорить?

Я знаю что есть возможность компилировать только изменённые файлы, но так-как проект для университета, и я должен послать source code на автоматическую проверку, этот вариант не подходит.


Компиляция командой g++ *.cpp занимает около минуты
Компиляция командой make, с простеньким makefile, занимает примерно пол минуты. Может можно как-то усовершенствовать makefile.
User is offlinePM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов(1 - 7)
skeletor
Aug 28 2006, 7:48
  
Пост #2



Репутация:   145  
Постоялец
***

Группа: Пользователи
Сообщений: 1 613
С нами с: 31-March 06


(tvcool @ Aug 28 2006, 3:34) Перейти к цитате

Я знаю что есть возможность компилировать только изменённые файлы

Ну так и есть. Это ведь С! Компилишь только изменённые файлы, потом уже в конечном итоге собираешь. Насчёт ускорить - знаю только ламерский ответ - пересмотреть исходники, и может заменить участки кода на быстрее обрабатываемые.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
troorl
Aug 28 2006, 8:07
  
Пост #3


Незарегистрированный







Ну так и есть. Это ведь С!

коллега, это С++
Go to the top of the page
+Quote Post
skeletor
Aug 28 2006, 8:17
  
Пост #4



Репутация:   145  
Постоялец
***

Группа: Пользователи
Сообщений: 1 613
С нами с: 31-March 06


(troorl @ Aug 28 2006, 9:07) Перейти к цитате

коллега, это С++

Ну и? Разве в С++ нельзя отдельно компилить файлы, а потом слинковать проэкт, коллега?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
troorl
Aug 28 2006, 8:25
  
Пост #5


Незарегистрированный







Ну и? Разве в С++ нельзя отдельно компилить файлы, а потом слинковать проэкт, коллега?

Вообще-то make (я пользуюсь qmake, но думаю с make то же самое) компилит только изменённые файлы по умолчанию. Коллега?
Go to the top of the page
+Quote Post
skeletor
Aug 28 2006, 8:38
  
Пост #6



Репутация:   145  
Постоялец
***

Группа: Пользователи
Сообщений: 1 613
С нами с: 31-March 06


Всё правильно, коллега. smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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. Если исходники не модифицировались, объектные файлы будут использоваться повторно.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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




User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic

 



- Упрощённая версия
Сейчас: 22nd July 2024 - 14:27
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст.