Предварительная компиляция собственных заголовков

Я создаю проект C++, используя Eclipse в ОС Windows, я также использую библиотеку Eigen Linear Algebra. Моя проблема связана с очень медленным временем компиляции Eigen (около 50 секунд).

Я пробовал эти предлагаемые решения:

Мне действительно нужно решение для этого, очень непрактично ждать 47 секунд каждый раз, когда я создаю проект, чтобы что-то проверить.

Любая идея глубоко оценена, спасибо.


person M.A.    schedule 16.04.2015    source источник
comment
Поддержка предварительно скомпилированных заголовков зависит от компилятора. Какой компилятор и версию вы используете? А что именно не получилось из первой ссылки?   -  person Angew is no longer proud of SO    schedule 16.04.2015
comment
@Энгью. Я использую компилятор Cygwin C++ -g3. Что касается первой ссылки, я сделал все возможное, чтобы перейти по ней, но это не дало мне никаких результатов, ничего не изменилось, возможно, я сделал ошибку на шаге, где говорится. Затем перейдите к опции «Разное», выберите конфигурацию выпуска и добавьте ... . Я не был уверен, как построить свой путь в этой форме.   -  person M.A.    schedule 16.04.2015


Ответы (1)


Eigen — это библиотека шаблонов, что означает, что классы определяются на основе параметров шаблона. Я не думаю, что вы сможете прекомпилировать, не сообщая компилятору точно все возможные классы, которые вам понадобятся во всей вашей кодовой базе.

В качестве альтернативы вы можете написать оболочку для Eigen и объявить все нужные вам типы и использовать эту библиотеку. ОДНАКО, вы, вероятно, потеряете много преимуществ Eigen (см. здесь, здесь и другие).

person Avi Ginsburg    schedule 16.04.2015
comment
Возможно использовать предварительно скомпилированные заголовки для ускорения компиляции шаблона, по крайней мере, с компилятором, который правильно выполняет двухэтапный поиск имен. Это может не ускорить создание экземпляра, но все равно сэкономит на синтаксическом анализе. А с кодом шаблона обычно требуется много синтаксического анализа. - person Angew is no longer proud of SO; 16.04.2015
comment
@Angew Достаточно честно. Однако второй пункт по-прежнему актуален, хотя и опасен для производительности из-за потери шаблонов выражений. - person Avi Ginsburg; 16.04.2015