Я бы хотел, чтобы MSBuild.exe всегда использовал параметр /MP, чтобы проекты всегда создавались с несколькими ядрами. Я попытался добавить /MP в последнюю строку моего MSBuild.rsp (в том же каталоге, что и исполняемый файл MSBuild.exe). Однако параметр /MP не используется. Как я могу заставить Visual Studio всегда использовать параметр /MP?

MSBuild.rsp описывает поведение, которое я хочу использовать, но я не смог заставить его работать:

Файл автоответчика - это специальный файл .rsp, который MSBuild.exe автоматически использует при создании проекта. Этот файл MSBuild.rsp должен находиться в том же каталоге, что и MSBuild.exe, иначе он не будет найден. Вы можете отредактировать этот файл, чтобы указать переключатели командной строки по умолчанию для MSBuild.exe. Например, если вы используете один и тот же регистратор каждый раз, когда создаете проект, вы можете добавить ключ /logger в MSBuild.rsp, и MSBuild.exe будет использовать регистратор каждый раз, когда создается проект.

Я перезагрузил компьютер, чтобы убедиться, что MSBuild.exe не использует предыдущую версию MSBuild.rsp.

Я проверил, что я изменял MSBuild.rsp в том же каталоге, что и MSBuild.exe, проверив "Расположение открытого файла" в диспетчере задач Windows. Опция MP конфигурации проекта пуста (явно не отключена).

Я подтвердил, что параметр /MP в MSBuild.rsp не использовался, выполнив перестройку "Только проект" и посчитав только один экземпляр cl.exe в диспетчере задач Windows (если я сделаю то же самое перестроение с параметром /MP, установленным вручную существует более 10 экземпляров cl.exe).

Я также попытался добавить кучу мусора в MSBuild.rsp, и Visual Studio не сообщала ни об ошибках, ни предупреждениях, что наводит меня на мысль, что MSBuild.rsp вообще не используется.

Я попытался включить ведение журнала диагностики для MSBuild, и он показывает параметр /MP (в качестве аргумента для Tracker.exe), когда я явно включаю его в настройках конфигурации своего проекта, но если я оставляю параметр MP пустым в конфигурации моего проекта и просто включаю в MSBuild.rsp опция /MP не включена в этот вывод. Я не знаю, что такое Tracker.exe (я ожидал увидеть MSBuild.exe на своем месте). Я также попытался добавить файл Tracker.rsp с /MP в том же каталоге, что и Tracker.exe, но это тоже не помогло (и я также попытался добавить MSBuild.rsp в мой каталог Tracker.exe, и это тоже не имел никакого влияния).

Просто чтобы посмотреть, может ли когда-нибудь работать файл rsp, я явно добавил файл rsp с опцией @, добавленной в параметры конфигурации моего проекта, и он отображается как загрузка в параметре /MP в выводе диагностической сборки, но это не имеет никакого эффекта , Параметр /MP включается позже в качестве аргумента cl.exe, а не в качестве аргумента для Tracker.exe, как это было, когда параметр MP был указан в конфигурации проекта. Я думаю, что вариант должен быть MSBuild (или Tracker.exe, я думаю), а не cl.exe.

Я использую Visual Studio 2010 в основном с проектами C++.

1 ответ1

1

Одна вещь, которую вы можете сделать, это поместить ее в файл props и сделать так, чтобы ваши отдельные проекты наследовали от этого файла. В ItemDefinitionGroup внутри вашего ClCompile вас будет <MultiProcessorCompilation>true</MultiProcessorCompilation> .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .