Я хотел бы иметь возможность создать пользовательское переопределение для добавления свойства VcpkgConfiguration
на основе нашей текущей конфигурации.
У нас есть проект на C ++, который использует Premake и vcpkg. Мы обнаружили, что vcpkg конфликтует с другими проектами, которые включают собственные версии похожих библиотек, поэтому мы не можем использовать предоставляемую им глобальную интеграцию. Вместо этого мы добавили его как субмодуль в наш проект и связали его с помощью premake с пользовательским переопределением:
p.override(p.vstudio.vc2010, "importExtensionTargets", function(base, prj)
p.push('<ImportGroup Label="ExtensionTargets">')
p.callArray(p.vstudio.vc2010.elements.importExtensionTargets, prj)
p.pop('</ImportGroup>')
p.push('<ImportGroup Label="ExtensionTargets">')
p.w('<Import Project="$(SolutionDir)External/vcpkg/scripts/buildsystems/msbuild/vcpkg.targets"/>')
p.pop('</ImportGroup>')
end)
К сожалению, мы не используем обычные конфигурации "Debug" или "Release" в нашем проекте, поэтому vcpkg по умолчанию не связывается правильно. Чтобы обойти эту проблему, мы изменили файл vcpkg.targets
для распознавания нашей конфигурации в локальной ветке. Это не идеально, так как вынуждает нас перебазировать нашу ветку с vcpkg
, чтобы обновить ее, и может потенциально конфликтовать, если этот файл когда-либо будет изменен в их репо.
Файл целей позволяет вам установить свойство VcpkgConfiguration
перед включением цели, что мы и хотели бы сделать.
В основном мы хотели бы иметь возможность вызывать команду с помощью фильтров, таких как:
filter {"configurations:<SomeConfiguration>"}
VcpkgConfig "Debug"
Что бы добавить это в группу свойств
<VcpkgConfiguration>Debug</VcpkgConfiguration>
Как мы можем это сделать?