Уменьшите время компиляции clang с предварительно скомпилированными заголовками
Я работаю над проектом базы данных, который компилирует запросы (выраженные на каком-то языке более высокого уровня) в код C++. Этот код компилируется и выполняется базой данных. Эта часть работает отлично.
Прямо сейчас я пытаюсь сократить время компиляции для кода запроса C++. Мне было интересно, могу ли я использовать предварительно скомпилированные заголовки, чтобы получить производительность здесь.
Запрос переводится в файл с именем Query.cpp, в который входит библиотека /src/Database.hpp. Файл Database.hpp содержит дополнительные файлы, такие как StandardTypes.hpp и так далее. Могу ли я предварительно скомпилировать все эти заголовочные файлы, чтобы ускорить компиляцию Query.cpp? Если да, как я могу это сделать? До сих пор я не смог найти хорошего примера для скомпилированных заголовков, только некоторые действительно простые вещи.
Я использую следующую команду для компиляции Query.cpp:
clang++ -fPIC -std=c++11 Query.cpp -I./library/src/ -shared -o libquery.so;
1 ответ
Чтобы создать скомпилированный заголовок, включите все заголовки, которые вы не изменили, в Query.h и используйте:
clang -cc1 Query.h -emit-pch -o Query.h.pch
использовать предварительно скомпилированный тип заголовка:
clang -cc1 -include-pch Query.h.pch Query.cpp -shared -o libquery.so;
Query.cpp должен включать Query.h