Согласно этому ответу , файлы .iobj создаются для поддержки пошаговой генерации кода времени ссылки (иначе LTCG, и то, что раньше называлось, я полагаю, всей программой) оптимизация »), и LTCG обычно включается только для сборок релиза.
Одна оптимизация, которую может выполнить LTCG, - встроить функцию из другого модуля компиляции (то есть исходного файла). Компилятор (конечно) не может этого сделать. Нет сомнений в других.
Файлы
.ilk, с другой стороны, поддерживают добавочное связывание для отладочных сборок, чтобы получить быстрое время ссылки. Это не то же самое, что инкрементная LTCG, где компоновщик пытается использовать оптимизации кросс-компиляции, которые он делал ранее, опять же, чтобы ускорить процесс, но другим способом.
Из этого следует, что для подавления генерации файлов .iobj отключите «генерацию временного кода инкрементной ссылки» для вашего проекта, а для подавления генерации файлов .ilk отключите «инкрементную компоновку». Я считаю, что оба из этих вариантов компоновщика. Но зачем? - они ускоряют развитие. Вместо этого я удаляю эти файлы при архивировании [версии] моего проекта.
Инкрементные ссылки обычно отключаются для релизных сборок, хотя я не уверен, почему. Возможно, эти два варианта несовместимы, я никогда не пытался включить их оба одновременно. Или, может быть, MS подумала, что нам надоело, что они загромождают наши жесткие диски продуктами для сборки, кто знает?