Мы пытаемся обновить наше решение VS2008, состоящее из ~ 20 проектов, до VS2010, но есть проблема с построением некоторых из них. Я пробовал разные версии VS (2010, 2012, 2013. даже с версией компилятора vc90) / IncrediBuild (4.61, 5.0, 6.1) / Windows (7, 8), но ничего не помогает. Все возможные варианты проектов и Incredi тоже были изменены. Пользовательские правила сборки и шаги не установлены для этих проектов. Пожалуйста, подскажите кто-нибудь, что я могу сделать, чтобы решить проблему.
Я не могу загрузить изображения, так что это ссылка на скриншот графика построения.
Upd: Я попытался скомпилировать решение в VS2013 без IncrediBuild, но с параметром / MP, и получил то же самое — некоторые файлы проекта были скомпилированы последовательно и в том же порядке, так что Incredi невиновен и проблема только в нашем проекте и как VS работает с ним.
В последней общедоступной версии IncrediBuild появилась функция, которая является именно тем, о чем вы просите, — действительно неупорядоченным \ оптимизированным распараллеливанием.
Эта новая функция позволяет IncrediBuild выполнять задачи Visual Studio параллельно даже в тех случаях, когда Visual Studio не знает, как это сделать. Это означает, что с IncrediBuild каждая задача, которая НЕ РЕАЛЬНО зависит от предыдущей задачи, будет выполняться параллельно с ней.
Таким образом, в сценарии, как описано выше, хотя заполнение имен фиксированных выходных объектных файлов приводит к тому, что Visual Studio (и MSBuild) компилирует эти файлы последовательно, IncrediBuild будет компилировать их параллельно.
Кроме того, в сценарии, где проект B зависит от проекта A, Visual Studio будет компилировать только источники из проекта B, ПОСЛЕ того, как выполнено связывание A (хотя в большинстве случаев компиляции проекта B не зависят только от компиляций проекта A, только этапы связывания этих проектов зависят друг от друга), IncrediBuild сможет параллельно компилировать как проект A, так и проект B, используя ссылку A и ссылку B.
Надеюсь, что это пролило некоторый свет на эту тему.
Отказ от ответственности: автор является техническим директором в IncrediBuild
Итак, проблема была в том, что некоторые из cpp-файлов имели фиксированные имена выходных объектных файлов. Когда эти параметры были очищены, компиляция для них началась параллельно. Но в VS2008 все было хорошо даже с такими параметрами свойств