Название: Предкомпилированные заголовки (Precompiled Headers) Отправлено: f_evgeny от Март 22, 2007, 11:19 Господа, а использует ли кто-нибудь предкомпилированные заголовки?
И если использует то как. Я попробовал таким образом. В своем проекте для каждого заголовочного файла компилю компилю предкомпилированнные заголовки. Компилю их такими командами в Makefile: Код: cmd_msg.h.gch: cmd_msg.h Специально для оценки скорости работы ввел режим их отдельного компилирования. Но, что-то мне не совсем нравится то, что когда приходится перекомпилировать весь проект, это получается гораздо дольше, чем совсем без предкомпилированных заголовков. Вот результаты компиляций: Код:
Пояснения: 1.1 Компиляция одного модуля, pheaders модуля и всего проекта скомпилированы 1.2 То же pheaders модуля не скомпилированы 1.3 То же, без pheaders 2.1 Компиляция pheaders и всего проекта 2.2 Компиляция проекта без использования pheaders Вот пришла в голову мысль, может для стандартных заголовков попробовать сделать так, там, где в моем заголовке включаетсся стандартный заголовок включить его через свой, примерно так, my.h: Код: #include "../headers/my_string.h" headers/my_string.h: Код:
И включить директорию headers в путь поиска заголовков Вроде тогда стандартные заголовки должны компилится только один раз и использоваться несколько раз, по идее общее время компиляции проекта должно уменьшится. Кто нибудь пробовал такой путь? Название: Предкомпилированные заголовки (Precompiled Headers) Отправлено: Вудруф от Март 22, 2007, 11:54 headers указывать не обязательно, ты ведь итак от текущей пляшешь.
Попробуй, мне интересны результаты :) добавлено спустя 1 минуту: А не проще ли сделать прекомпилированные варианты для стандартных хеадеров? Название: Предкомпилированные заголовки (Precompiled Headers) Отправлено: Admin от Март 22, 2007, 12:29 я обычно так делаю
все хеадеры в проекте сую в один типа main.h #include <stdio.h> и так далее и его как раз использую для прекомпиляции в VC сильно помогает Название: Предкомпилированные заголовки (Precompiled Headers) Отправлено: f_evgeny от Март 22, 2007, 17:18 Итак, провел эксперимент, с учетом рекомендаций. Вот отчет.
1. Сначала попробовал так как планировал - для каждого стандартного заголовка прекомпилированый хедер. Неполучилось, не компилируется проект. Почитал инфо на gcc - оказалось для каждого сеанса компиляции может быть один прекомпилированный хедер. 2. Как рекомендовали, собрал все стандартные хедеры в один и настроил Makefile на его прекомпиляцию. В каждый хедер пришлось вставить следующий макрос: Код: #ifndef _HEADERS__STD_H_ Заработало! Вот результаты : Код:
Файл headers_std.h: Код:
добавлено спустя 3 минуты: Да, забыл. gcc version 3.4.4 20050314 |