Предварительно скомпилированные Заголовки? Нам действительно нужны они

Убедитесь, что все зависимости Facebook SDK используют одну и ту же версию библиотеки поддержки вашего проекта:

dependencies {
    // Facebook SDK dependencies, excluding Bolts
    compile "com.android.support:appcompat-v7:25.4.0"
    compile "com.android.support:cardview-v7:25.4.0"
    compile "com.android.support:customtabs:25.4.0"
    compile "com.android.support:design:25.4.0"

    compile "com.facebook.android:facebook-android-sdk:4.23.0"
}
12
задан Brian Tompsett - 汤莱恩 5 June 2016 в 13:09
поделиться

6 ответов

The advantage of precompiled headers is that the huge system library header files and other files that do not change at all or infrequently only have to be parsed once per build.

As all C compilers (that I know of) work on every .c file seperately, skipping the "known" part of the includes can have a huge impact on compile time.

They are not a portability issue either, you can compile a project using stdafx.h/cpp with GCC just fine, the only problem is that the compilation time might go up because not everything in stdafx.h is needed in every compilation unit.

0
ответ дан 2 December 2019 в 05:28
поделиться

I'm always turning it off. I've run into more problems than good with them on the projects I've worked on. Many subtle bugs came up that could be tracked down to a precompiled header that did not get recompiled for some reason. Maybe it's better in current VS incarnations.

3
ответ дан 2 December 2019 в 05:28
поделиться

Я думаю, что ваш вопрос действительно зависит от размер проекта, который вы компилируете. Есть несколько действительно больших проектов, в которых предварительно скомпилированные заголовки действительно имеют огромное значение.

Итак, мой ответ: это зависит ...

Но если их использование по той или иной причине делает вашу жизнь несчастной ( т.е. переносимость) и ваш проект не очень большой .. Я бы сказал пропустить их.

4
ответ дан 2 December 2019 в 05:28
поделиться

По-прежнему полезно использовать заголовок предварительной компиляции как минимум по двум причинам:
1) У многих людей нет Mac Pro с 32 ГБ ОЗУ, счастливчик!
2) Это способ ограничить включение в * .h
Единственный известный мне способ сделать кроссплатформенный предварительно скомпилированный заголовок - это работать с Qt и его файлом кроссплатформенного проекта: файлом PRO!

-1
ответ дан 2 December 2019 в 05:28
поделиться

Единственное очевидное преимущество - небольшое уменьшение времени компиляции. Обычно я ими не пользуюсь. Для большинства моих проектов время компиляции не так уж и плохо (например, обычно меньше нескольких минут).

Если ваш проект не огромен, они обычно приносят больше вреда, чем пользы. (Они сильно зависят от компилятора.)

2
ответ дан 2 December 2019 в 05:28
поделиться

Не существует такой вещи, как сборка, которая была бы "достаточно быстрой". Сторонники TDD ( Test-Driven Development ) будут расстроены, если их сборка займет больше нескольких секунд, потому что это значительно замедлит изменение их стиля разработки.

Я ' Мы работали над проектами с часами компиляции, которые мы сократили вдвое (или даже лучше), правильно работая с предварительно скомпилированными заголовками, поэтому выгода может быть довольно большой, особенно для проектов, которые какое-то время пренебрегали временем сборки.

Однако предпочтительным решением остается то, что время компиляции никогда не выходит из-под контроля за счет контроля физических зависимостей кода.

Для получения дополнительной информации прочтите Уход за предварительно скомпилированными заголовками и их загрузка

17
ответ дан 2 December 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: