В настоящее время я пытаюсь создать библиотеку C ++, и мне хотелось бы, чтобы каждый раз, когда нажималась кнопка сборки, я получал все перемещаемые файлы, которые нужно переместить в определенный каталог.
Что у меня сейчас есть, так это
<Target Name="CopyToIncludeFiles">
<Message Text="Copying All '*.h' and '*.hpp' to the include directory" Importance="high">
</Message>
<Copy SourceFiles="@(ClInclude)" DestinationFolder="..\HelperLib\x86\include\">
</Copy>
</Target>
И я включаю цель в лайки DefaultTargets так
<Project ToolsVersion="4.0" DefaultTargets="Build;CopyToIncludeFiles;" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Это все работает нормально, пока я использую пересборку, но это никогда не срабатывает, когда я просто нажимаю сборку.
Что мне нужно сделать, чтобы запустить этот прогон, если я нажму на сборку или перестройку?
Я думаю, что задачу, которую вы решаете, легче сделать с PreBuild Event
в свойствах проекта, так как это просто команда командной строки.
Если вы все еще хотите msbuild — вы можете использовать BeforeTargets
как это:
<Target Name="CopyToIncludeFiles" BeforeTargets="Rebuild;Build">
<Message Text="Copying All '*.h' and '*.hpp' to the include directory" Importance="high" />
<Copy SourceFiles="@(ClInclude)" DestinationFolder="..\HelperLib\x86\include\" />
</Target>
Вы не должны менять проект DefaultTargets
свойство, чтобы включить вашу задачу.
Также обратите внимание, что и событие PreBuild, и эта задача msbuild не побежит если ваш код проекта не требует перекомпиляции (т.е. файлы cpp / h не изменены).
Других решений пока нет …