Чтобы стать более близким с MSBuild, я хотел создать vcxproj с нуля и использовать msbuild через командную строку.Я следую Документам о том, как построить проект с нуля.
После создания простой программы с такой структурой каталогов:
%Root%\include\main.h
%Root%\src\main.cpp
%Root%\sample.vcxproj
Я построилмой файл vcxproj по ссылке выше.Я внес необходимые изменения, чтобы отразить мою структуру каталогов.
В моей системе установлена Visual Studio 2017 и установлены все необходимые инструменты MSBuild.Проблема, с которой я столкнулся, заключается в $(VCTargetsPath)
, по умолчанию решающей C:\
.
После поиска, похоже, что для правильного разрешения KvP реестра необходимо установить - см. Здесь.Это кажется мне странным, потому что когда я проверяю файлы vcxproj, созданные в проектах, которые я создал в Visual Studio, они используют одну и ту же ссылку $(VCTargetsPath)
, и все работает нормально.Кроме того, в ссылке, указывающей, что в разделе реестра необходимо внести изменения, я не могу найти каталог где-нибудь в моей системе, который заканчивается на *\Microsoft.cpp\v4.0\*
.
Любые идеи, как я могу сделать $(VCTargetsPath)
правильнорешить ??
РЕДАКТИРОВАТЬ: Вот как я решил эту проблему: В моем файле sample.vcxproj я создал группу свойств, которая определила $(VCTargetsPath)
для известного местоположения - C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets
, как это.
<PropertyGroup>
<VCTargetsPath>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\</VCTargetsPath>
</PropertyGroup>
Тогда из powershell я бежал
cmd /c "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" sample.vcxproj /p:configuration=debug