Название: Precompiled headers Отправлено: QCasper от Сентябрь 28, 2007, 11:03 Раньше все как-то не связывался, но тут решил попробовать, прочитал значит статейку1, все сделал, все клево работает. Одна проблема, допустим у меня куча проектов, они все генерят свой собственный *.pch файл и используют его потом. А как сделать, чтобы они все использовали один такой файл, который был сгенерен заранее?
1. http://wiki.qtcentre.org/index.php?title=Precompiled_headers (http://wiki.qtcentre.org/index.php?title=Precompiled_headers) Название: Re: Precompiled headers Отправлено: Dendy от Сентябрь 28, 2007, 13:47 Рекомендую этим не заниматься. Прекомпиленые заголовочники могут быть использованы вместо обычных только если выполнен ряд условий: Совпадение параметров компиляции, архитектуры, путей, директив, содержимого исходного кода такого заголовочника и так далее. Что будет, если в каком-то проекте вы захотите помимо <QtCore> <QtGui> добавить, к примеру, <string.h>? Или начнёте играться с оптимизациями -O2, -O3, -Os? Или вы собираетесь держать гигабайты всевозможных комбинаций у себя на жёстком диске? Прекомпиленые заголовочники - способ оптимизации сборки, результатом которой является временный вспомогательный файл. И как и все временные файлы он не должен пересекаться с продуктами компиляции других программ и в любой момент может быть удалён.
Название: Re: Precompiled headers Отправлено: QCasper от Сентябрь 28, 2007, 13:55 Что будет, если в каком-то проекте вы захотите помимо <QtCore> <QtGui> добавить, к примеру, <string.h>? Или начнёте играться с оптимизациями -O2, -O3, -Os? Или вы собираетесь держать гигабайты всевозможных комбинаций у себя на жёстком диске? Перекомпилю этот файл заново. Прекомпиленые заголовочники - способ оптимизации сборки, результатом которой является временный вспомогательный файл. И как и все временные файлы он не должен пересекаться с продуктами компиляции других программ и в любой момент может быть удалён. Согласен, но тем не менее он может быть опять восстановлен и опять использован. Название: Re: Precompiled headers Отправлено: Dendy от Сентябрь 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 файл. Кроме того потребуется создать универсальные правила по собиранию информации о проекте с генерацией таких имён, и не дай вам Бог что-то пропустить. Эти правила будут навязываться остальным пользователям, которым вы передадите проект. Неиспользуемые прекомпиленые заголовочники будут лежать мёртвым грузом. Изменение "универсальной" сигнатуры приведёт к пересозданию файлов. Спрашивается, оно вам нужно? Чего хоть добиваетесь? Экономии места на диске или времени сборки? Сомневаюсь, что есть выгода и в первом и во втором. Название: Re: Precompiled headers Отправлено: QCasper от Сентябрь 28, 2007, 15:56 Чего хоть добиваетесь? Экономии места на диске или времени сборки? Сомневаюсь, что есть выгода и в первом и во втором. Добиваюсь второго. Хорошо, какое решение данной задачи вы считаете оптимальным и можете посоветовать? Название: Re: Precompiled headers Отправлено: Dendy от Сентябрь 29, 2007, 02:23 Всё просто - в каждой сборке проекта генерация своего заголовочника.
Может быть я неверно понял и вам нужно использовать одни и те же прекомпиленые заголовочники внутри связанной цепочки проектов. Название: Re: Precompiled headers Отправлено: QCasper от Сентябрь 29, 2007, 10:53 Всё просто - в каждой сборке проекта генерация своего заголовочника. Понятно, в конечном итоге я так и сделал. Просто хотел обойти генерацию заголовочника на каждом проекте. |