Russian Qt Forum
Ноябрь 23, 2024, 12:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Precompiled headers  (Прочитано 5064 раз)
QCasper
Гость
« : Сентябрь 28, 2007, 11:03 »

Раньше все как-то не связывался, но тут решил попробовать, прочитал значит статейку1, все сделал, все клево работает. Одна проблема, допустим у меня куча проектов, они все генерят свой собственный *.pch файл и используют его потом. А как сделать, чтобы они все использовали один такой файл, который был сгенерен заранее?

1. http://wiki.qtcentre.org/index.php?title=Precompiled_headers
Записан
Dendy
Гость
« Ответ #1 : Сентябрь 28, 2007, 13:47 »

Рекомендую этим не заниматься. Прекомпиленые заголовочники могут быть использованы вместо обычных только если выполнен ряд условий: Совпадение параметров компиляции, архитектуры, путей, директив, содержимого исходного кода такого заголовочника и так далее. Что будет, если в каком-то проекте вы захотите помимо <QtCore> <QtGui> добавить, к примеру, <string.h>? Или начнёте играться с оптимизациями -O2, -O3, -Os? Или вы собираетесь держать гигабайты всевозможных комбинаций у себя на жёстком диске? Прекомпиленые заголовочники - способ оптимизации сборки, результатом которой является временный вспомогательный файл. И как и все временные файлы он не должен пересекаться с продуктами компиляции других программ и в любой момент может быть удалён.
Записан
QCasper
Гость
« Ответ #2 : Сентябрь 28, 2007, 13:55 »

Что будет, если в каком-то проекте вы захотите помимо <QtCore> <QtGui> добавить, к примеру, <string.h>? Или начнёте играться с оптимизациями -O2, -O3, -Os? Или вы собираетесь держать гигабайты всевозможных комбинаций у себя на жёстком диске?

Перекомпилю этот файл заново.

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

Согласен, но тем не менее он может быть опять восстановлен и опять использован.
Записан
Dendy
Гость
« Ответ #3 : Сентябрь 28, 2007, 14:38 »

Технически проблем нет. Можно создать папку, в которой будут лежать стопкой:
ph-qtcore4.3-qtgui4.3-qtnetwork4.3-...<all headers with versions>-...gcc4.1-x86-Og-...<all compiler options>-D...<additional defines>...<and so on>

Рядом с ним будет генериться такой же pch файл. Кроме того потребуется создать универсальные правила по собиранию информации о проекте с генерацией таких имён, и не дай вам Бог что-то пропустить. Эти правила будут навязываться остальным пользователям, которым вы передадите проект. Неиспользуемые прекомпиленые заголовочники будут лежать мёртвым грузом. Изменение "универсальной" сигнатуры приведёт к пересозданию файлов.

Спрашивается, оно вам нужно? Чего хоть добиваетесь? Экономии места на диске или времени сборки? Сомневаюсь, что есть выгода и в первом и во втором.
Записан
QCasper
Гость
« Ответ #4 : Сентябрь 28, 2007, 15:56 »

Чего хоть добиваетесь? Экономии места на диске или времени сборки? Сомневаюсь, что есть выгода и в первом и во втором.

Добиваюсь второго. Хорошо, какое решение данной задачи вы считаете оптимальным и можете посоветовать?
Записан
Dendy
Гость
« Ответ #5 : Сентябрь 29, 2007, 02:23 »

Всё просто - в каждой сборке проекта генерация своего заголовочника.

Может быть я неверно понял и вам нужно использовать одни и те же прекомпиленые заголовочники внутри связанной цепочки проектов.
Записан
QCasper
Гость
« Ответ #6 : Сентябрь 29, 2007, 10:53 »

Всё просто - в каждой сборке проекта генерация своего заголовочника.

Понятно, в конечном итоге я так и сделал. Просто хотел обойти генерацию заголовочника на каждом проекте.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.282 секунд. Запросов: 20.