Здравствуйте, Sinclair, Вы писали:
EP>>CMake не восстанавливает проектный файл. Определение проекта записывается на языке CMake — это первоисточник.
S>Это потому, что для С++ никакого первоисточника нет. Есть горка файлов и сакральные знания о том, как эту горку файлов превратить во что-нибудь полезное.
Можно подумать, для дотнетных проектов это не так. ))
Изначально MSBuild знать не знает ни о C#, ни о C++.
Всё прописано в подключаемых props.
В дотнетных проектах что-то типа такого:
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')"/>
В плюсовых такое:
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
С версии MSBuild 15.0 добавили новый SDK-тип проекта:
<Project Sdk="Microsoft.NET.Sdk">
Что является всего-лишь сокращённой формой записи ровно того же самого:
During evaluation of the project, MSBuild adds implicit imports at the top and bottom of the project file:
<Project>
<!-- Implicit top import -->
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<TargetFramework>net46</TargetFramework>
</PropertyGroup>
<!-- Implicit bottom import -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>
Т.е., немного синтаксического сахара конкретно для дотнета.
Здравствуйте, vdimas, Вы писали:
V>По ссылке:
V>V>const string msBuildExe = @"%ProgramFiles(x86)%\MSBuild\14.0\Bin\MSBuild.exe";
V>
V>14-й не справляется для последних .Net Core-проектов.
Ты видел какая там версия в теге? В текущем варианте его зачем то переписали руками, но к путям он уже не прибит.
НС>>Если брать примерчик выше, то можно, к примеру, так же генерировать https://github.com/rsdn/CodeJam/blob/master/Build/Props/CodeJam.Targeting.props с синтаксисом ничуть не хуже cmake.
V>Сравнить с тем, что в варианте CMake будет что-то вроде создания в цикле объектов ProjectInfo из Compile.tt.
Ну я и говорю, функционально-логический vs императивный.
V>Плюс не будет расползания "знаний" по проекту.
Непонятно про какое такое расползание речь.
V>CMake в этом смысле подкупает тем, что всевозможные флаги конфигураций, константы, пути и т.д. вводятся/обслуживаются, грубо, в одном месте.
В msbuild можно сделать все ровно то же.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>