Как получить / MP вариант проектов VC, использующих EnvDTE? - PullRequest
0 голосов
/ 14 октября 2018

Я разрабатываю надстройку Visual Studio для изменения проектов VC, и я хотел бы получить параметр / set / MP (параметр компиляции с несколькими процессорами).Но я не могу найти собственность, чтобы изменить это.Где находится недвижимость для / MP?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Я могу получить опцию MP с кодом ниже.

p.GetEvaluatedPropertyValue("MultiProcessorCompilation");
0 голосов
/ 17 октября 2018

Для проектов VC ++ необходимо передать ключ / Qpar компилятору с помощью параметра «Включить генерацию параллельного кода» на странице свойств C / C ++ | Генерация кода.

Чтобы сделать это программно из пакета VS, вы можете использовать метод IVCRulePropertyStorage.GetEvaluatedPropertyValue .

Например, если у вас уже есть интерфейс EnvDTE.Project для рассматриваемого проекта:

   Project proj = GetSelectedProject();
   VCProject vcProject = (VCProject)proj.Object;
   IVCCollection configs = (IVCCollection)vcProject.Configurations;
   VCConfiguration firstConfig = (VCConfiguration)configs.Item(1);
   IVCCollection rules = firstConfig.Rules;

   IVCRulePropertyStorage p = rules.Item("CL");
   string isParallelCodeGenSet = p.GetEvaluatedPropertyValue("EnableParallelCodeGeneration");

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

Несколько дополнительных ссылок, которые вы должны рассмотреть:

Работа с Visual Studio C ++Свойства проекта

Как читать / записывать новые свойства проекта Visual C ++

VCConfiguration Interface

...