Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ как ускорить процесс сборки проекта?

Автор: zloyGamer 3.4.2010, 14:14

уже все стандартные либы(типа #include <QtNetwork>, #include <QtGui> и также его классы: #include <QtGui/QDialog>, #include <QtGui/QWidget> и т.д.) включил в PCH
и в cpp файлах вместо #include <QtGui> и т.п. просто включаю PCH.h

а также заметил если все cpp файлы прописывать не в pro файле а включить их в отдельном файле
(т.е. вместо SOURCES += main.cpp file1.cpp file2.cpp file3.cpp записать SOURCES += main.cpp all_cpp.cpp где в
all_cpp.cpp будет: #include "file1.cpp" #include "file2.cpp" #include "file3.cpp")
то скорость сборки немного увеличивается!.

подскажите может есть ещё какие нить способы ускорить процесс сбоки/пересборки проекта?

чуть не забыл, все это про mingw32 v3.81

Автор: kwisp 3.4.2010, 14:47

zloyGamer,
очень интересный вопрос.
я пробовал заводить дефайн-ключ сборки MAKE__WITH__INLINE, а в заголовочных файлах с помощью директив ifndef endif else оборачивал инлайн функции, т.е. получалось что если мне надо быстро пересобрать проект с изменением то, я правил срр файл и при пересборке пересобирался только один объектник. при сборке релиза я включал MAKE__WITH__INLINE и пересобирал весь проект с инлайнами.
дело в том что при пересборке много времени отнимает изменение в заголовочнолм файле т.к. будт персобираться все объектники куда он включен, изменения же в файле реализации влекут за собой персборку только одного объектника если конечно же ты по глупости не включил срр файл в другой срр файл.

колнечно все это бездейственно при изменении архитекруры программы -- добавление нового метода, или члена класса, но для этого в принципе и отводится львиная доля времени на проектирование а не на кодирование.

признаюсь по данному вопросу даже не гуглил. т.к. пока время терпит сборку моего проекта.

Автор: zloyGamer 3.4.2010, 14:56

отлично, но эт тока для инлайн функций а так по умолчнию итак пересобирается тока тот cppшный файл в котором ты и вносил изменения
спасибо за вариант

Автор: Litkevich Yuriy 3.4.2010, 15:22

Цитата(zloyGamer @ 3.4.2010, 18:14) *
и в cpp файлах вместо #include <QtGui>
во-первых, не включай модулями, а включай только нужные классы.
во-вторых, избегай использования не-указателей в заголовочниках, тогда в них можно будет не включать другие заголовочники, а использовать предварительное объявление.

Ну а в целом С/С++ всегда компилируется медленно по сравнению с паскалеподобными языками.

Автор: kwisp 3.4.2010, 15:53

я бы сказал главное ускорение(сокращение времени потраченного на сборку) это грамотное проектирование классов.
один раз можно и подождать когда релиз собираешь.
я вот в генте своей каждый день почти наблюдаю по несколько сборок и ничего -- время терпит.

Автор: zloyGamer 3.4.2010, 17:43

Цитата
во-первых, не включай модулями, а включай только нужные классы.

в PCH я включаю и модули и их классы т.е. все вместе. а уже в самих срр включаю этот один PCH где уже набрано все что надо..


Цитата
Ну а в целом С/С++ всегда компилируется медленно по сравнению с паскалеподобными языками.

зато паскаль не на стока гибок как с++, да и читается тяжело, один оператор смерти := чего тока стоит )), зато он оч. хорошо подходит для введения в программирование/школьникам/студентам, но а у меня насчет него особое мнение ..


Цитата(kwisp @ 3.4.2010, 15:53) *
... по несколько сборок и ничего -- время терпит.

вот, вот, время терпит и уходит.., над срочно что то придумать

Автор: SABROG 3.4.2010, 19:50

Цитата(zloyGamer @ 3.4.2010, 15:14) *
уже все стандартные либы(типа #include <QtNetwork>, #include <QtGui> и также его классы: #include <QtGui/QDialog>, #include <QtGui/QWidget> и т.д.) включил в PCH

У Qt уже есть PCH.

Цитата(zloyGamer @ 3.4.2010, 15:14) *
то скорость сборки немного увеличивается!.

Только 1 единственный раз - первый. Затем ты меняешь один из этих файлов и вместо перекомпиляции его одного у тебя пересобираются все.

Еще 2 темы на моей памяти где обсуждалось время компиляции:
http://www.prog.org.ru/topic_9891_0.html
http://www.prog.org.ru/topic_12638_15.html

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)