Файл проекта Visual Studio C ++ CustomBuild Задача: Фильтр OutputItemType по расширению файла - PullRequest
0 голосов
/ 09 февраля 2020

Я определил пользовательский шаг сборки в файле проекта Visual Studio 2019 C ++ ( .vcxproj ), который генерирует файлы .h и . cc. , Существует опция Custom Build Tool, озаглавленная «Добавить выходные данные к типу элемента» , где я могу выбрать один из «Заголовок C / C ++» или «Компилятор C / C ++» . Есть ли способ отредактировать полученный файл проекта так, чтобы файлы . cc добавлялись как "Компилятор C / C ++" и файлы .h добавляются в виде «Заголовок C / C ++» ?

Мой обходной путь - просто удалить сгенерированные файлы .h из списка выходных данных Custom Build Tool. , Недостаток этого обходного пути заключается в том, что сборка не будет выполнена, если один из файлов .h отсутствует или устарел. Я надеюсь на решение, которое устранит этот недостаток.

Ниже показано, что я пытался выполнить в файле .vcxproj :

<OutputItemType Condition="'%(Extension)'=='.cc'">ClCompile</OutputItemType>

1 Ответ

1 голос
/ 11 февраля 2020

Не уверен, как вы определяете Custom Build Step. Но пользовательский шаг сборки - не единственный способ.

Для проектов C ++, msbuild предоставляет пользовательский инструмент сборки, пользовательский шаг сборки, события сборки и пользовательские цели . Вы можете выполнить те же требования с помощью этого сценария:

  <Target Name="CustomTarget" BeforeTargets="PrepareForBuild">
    <Exec Command="xx.exe ..."/> <!--Call the tool.exe to generate files somewhere. We can save them in temp folder.--> 
    <Copy SourceFiles="xxx" DestinationFolder="xxx"/> <!--Use copy task to copy the generated files to project folder-->
    <ItemGroup>
      <ClCompile Include="Path of Temp folder\*.cc" />
    </ItemGroup>
  </Target>

И посмотрите это , я проверил некоторые связанные документы и подтвердил, что OutputItemType что-то о ProjectReference. Я не уверен, поддерживает ли этот синтаксис другие элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...