CMake 生成在 VS 2019 C# 项目上失败



>使用 VS 2019,我的 CMake CSharp 项目抱怨:

CMAKE_CSharp_COMPILER not set, after EnableLanguage

C# is currently only supported for Microsoft Visual Studio 2010 and later

世代后。已使用以下文件:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.1)
project(test_proj CSharp)
include(CSharpUtilities)
set(CMAKE_CSharp_FLAGS "/langversion:latest")
add_executable("test"
main.cs
)
set_target_properties("test" PROPERTIES
LINKER_LANGUAGE CSharp
VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.5"
VS_DOTNET_REFERENCES
"Microsoft.CSharp;
System;
System.Core;
System.Data;
System.Data.DataSetExtensions"
)

CMakeSettings.json:

{
"configurations": [
{
"name": "x64-Release",
"generator": "Ninja",
"configurationType": "Release",
"buildRoot": "${env.USERPROFILE}\CMakeBuilds\${workspaceHash}\build\${name}",
"installRoot": "${env.USERPROFILE}\CMakeBuilds\${workspaceHash}\install\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": []
}
]
}

似乎问题可能与Ninja生成器有关。

错误消息描述了为什么这不起作用:

C# is currently only supported for Microsoft Visual Studio 2010 and later.

这是因为 CMake 对 C# 的支持仅在您选择要Microsoft Visual Studio 2010 或更高版本的生成器时才有效。下面是 CMake 站点发布 C# 支持时的文档:

CMake 学会了支持 CSharp (C#( 作为可以通过project()enable_language()命令启用的一流语言。它目前由VS 2010及更高版本的Visual Studio Generators支持。

在撰写本文时可用的最新版本的 CMake 仍然如此,它不适用于 Ninja 生成器。只需将生成器更改为VS 2019:

{
"configurations": [
{
"name": "x64-Release",
"generator": "Visual Studio 16 2019",
...

最新更新