Иногда вы можете избежать длинной компиляции. Помимо улучшения качества ваших файлов / процессов сборки, вы можете выбрать только небольшую вещь для сборки. Если файл, над которым вы работаете, является файлом .cpp, просто скомпилируйте этот один TU и протестируйте его отдельно от остальной части проекта. Если это заголовок (возможно, содержащий встроенные функции и шаблоны), сделайте то же самое с небольшим количеством TU, которые между ними ссылаются на большую часть функциональности (если такого набора TU не существует, напишите модульные тесты для файла заголовка и используйте их) , Это позволяет быстро обнаруживать очевидные глупые ошибки (например, опечатки), которые не компилируются, и запускает подмножество тестов, которые, по вашему мнению, имеют отношение к изменениям, которые вы делаете. Если у вас есть что-то, что может неопределенно работать, выполните правильную сборку / тестирование проекта, чтобы убедиться, что вы не сломали ничего, что, по вашему мнению, не имело значения.
Там, где длинный цикл компиляции / тестирования неизбежен, я работаю сразу над двумя вещами. Чтобы это было эффективным, один из них должен быть достаточно простым, чтобы его можно было просто отбросить, когда основная задача готова к возобновлению, и снова поднять сразу же после завершения цикла компиляции / тестирования основной задачи. Это занимает немного планирования. И, конечно же, вторичная задача имеет свой собственный цикл сборки / тестирования, поэтому иногда вы хотите работать с отдельными извлеченными копиями исходного кода, чтобы ошибки в одной не блокировали другую.
Вторичной задачей может быть, например, «ускорить частичное время компиляции основной задачи за счет уменьшения межкомпонентных зависимостей». Несмотря на это, вы, возможно, достигли жесткого предела, когда требуется 10 минут для того, чтобы связать исполняемый файл вашей программы, поскольку разделение объекта на несколько dll, как хак для разработки, вероятно, не очень хорошая идея. Ключевым моментом, который следует избегать, является выполнение второстепенной задачи: «нажми SO» или this .