[devel] gcc-3.4 precompiled headers

Mikhail Yakshin =?iso-8859-1?q?greycat_=CE=C1_altlinux=2Eorg?=
Пт Мар 18 21:06:02 MSK 2005


Andrey Rahmatullin пишет:
> On Fri, Mar 18, 2005 at 06:18:11PM +0200, Serge Pavlovsky wrote:
> 
>>>>>Когда я хочу скомпилить чужую с++-софтину, я беру и компилю ее. При этом
>>>>>в ее исходниках уже вписаны #include <iostream.h> и т.д.
>>>>
>>>>это еще почему ?
>>>
>>>Ну аффтар написал так.
>>
>>вот и ответ на ваш вопрос
> 
> Ну так раз нет софта, поддерживающего PCH, и нет простого способа добавить
> эту поддержку без патченья исходников, _ЗАЧЕМ_ они в стандартной поставке g++???

Пожалуйста, почитайте соответствующую страничку info, которая идет с
gcc. Там все популярно и доступно объяснено, что, как, зачем и почему. Я
вот, например, пользуюсь, получаю примерно 6-7 кратный прирост в
скорости при сборке KDE/Qt-программ.

Если вкратце - то для любой прилично написанной программы имеет смысл
сделать что-то вроде:

cat *.cpp *.h | grep '#include' | sort -u >all.h

Скомпилировать полученный all.h в PCH:

g++ $(опции) all.h

и затем подключать этот all.h при сборке всех файлов:

g++ -include all.h $(опции) -c somefile.cpp -o somefile.o

Что-то в этом роде.

В стандартной поставке прекомплированные stdc++.h играют роль именно
таких вот файлов all.h, скомплириованных, правда, только с
libstdc++'ными заголовками. Но для многих программ на C++ это тоже может
дать неплохой прирост в производительности сборки.

-- 
WBR, Mikhail Yakshin AKA GreyCat
ALT Linux [http://www.altlinux.ru] [xmpp:greycat на altlinux.org]



Подробная информация о списке рассылки Devel