Информация об изменениях

Сообщение Re[13]: Можно ли создать .net 5.0 проект в CMake? от 03.09.2021 0:35

Изменено 03.09.2021 0:47 vdimas

Re[13]: Можно ли создать .net 5.0 проект в CMake?
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Потому что есть Т4. Который, кстати, может использоваться для порождения не только cs, но и файлы сборки.


По ссылке:
const string msBuildExe = @"%ProgramFiles(x86)%\MSBuild\14.0\Bin\MSBuild.exe";

14-й не справляется для последних .Net Core-проектов.
И может быть установлен не туда, куда указывает константа.

Сейчас вообще привязали версию MSBuild к Студии, поэтому, искать надо через Студию.

MSBuild is installed in the \Current folder under each version of Visual Studio, and the executables are in the \Bin subfolder.


На CMake:
cmake_host_system_information(RESULT vsdir QUERY "VS_16_DIR")
set(msbuild "${vsdir}/MSBuild/Current/Bin/MsBuild.exe")
message(STATUS "MSBBuild dir: ${msbuild}")

У меня выдаёт:
-- MSBBuild dir: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/MsBuild.exe



НС>Если брать примерчик выше, то можно, к примеру, так же генерировать https://github.com/rsdn/CodeJam/blob/master/Build/Props/CodeJam.Targeting.props с синтаксисом ничуть не хуже cmake.


Сравнить с тем, что в варианте CMake будет что-то вроде создания в цикле объектов ProjectInfo из Compile.tt.
На этом всё.
Остальное делается "само".

Плюс не будет расползания "знаний" по проекту.
CMake в этом смысле подкупает тем, что всевозможные флаги конфигураций, константы, пути и т.д. вводятся/обслуживаются, грубо, в одном месте.

Шаблонизаторы можно тоже всякие запускать, но для простых вещей уместен встроенный подстановщик переменных:
[assembly: AssemblyTitle("@PROJECT_NAME@")]
[assembly: AssemblyVersion("@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.0")]
[assembly: AssemblyFileVersion("@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.0")]


Ну и, хотя язык CMake я презираю за его убожество, но сравнивать с XML его всё-равно бесполезно. ))
Re[13]: Можно ли создать .net 5.0 проект в CMake?
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Потому что есть Т4. Который, кстати, может использоваться для порождения не только cs, но и файлы сборки.


По ссылке:
const string msBuildExe = @"%ProgramFiles(x86)%\MSBuild\14.0\Bin\MSBuild.exe";

14-й не справляется для последних .Net Core-проектов.
И может быть установлен не туда, куда указывает константа.

Сейчас вообще привязали версию MSBuild к Студии, поэтому, искать надо через Студию.

MSBuild is installed in the \Current folder under each version of Visual Studio, and the executables are in the \Bin subfolder.


На CMake:
cmake_host_system_information(RESULT vsdir QUERY "VS_16_DIR")
set(msbuild "${vsdir}/MSBuild/Current/Bin/MsBuild.exe")
message(STATUS "MSBBuild path: ${msbuild}")

У меня выдаёт:
-- MSBBuild path: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/MsBuild.exe



НС>Если брать примерчик выше, то можно, к примеру, так же генерировать https://github.com/rsdn/CodeJam/blob/master/Build/Props/CodeJam.Targeting.props с синтаксисом ничуть не хуже cmake.


Сравнить с тем, что в варианте CMake будет что-то вроде создания в цикле объектов ProjectInfo из Compile.tt.
На этом всё.
Остальное делается "само".

Плюс не будет расползания "знаний" по проекту.
CMake в этом смысле подкупает тем, что всевозможные флаги конфигураций, константы, пути и т.д. вводятся/обслуживаются, грубо, в одном месте.

Шаблонизаторы можно тоже всякие запускать, но для простых вещей уместен встроенный подстановщик переменных:
[assembly: AssemblyTitle("@PROJECT_NAME@")]
[assembly: AssemblyVersion("@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.0")]
[assembly: AssemblyFileVersion("@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.0")]


Ну и, хотя язык CMake я презираю за его убожество, но сравнивать с XML его всё-равно бесполезно. ))