Сбой генерации CMake в проекте VS 2019 C # - PullRequest
0 голосов
/ 20 октября 2019

Используя 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генератор.

1 Ответ

0 голосов
/ 21 октября 2019

Сообщение об ошибке описывает, почему это не работает:

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() команды. В настоящее время он поддерживается генераторами Visual Studio для VS 2010 и более поздних версий.

Это все еще относится к последним версиям CMake, доступным на момент написания, ине будет работать с генератором ниндзя. Просто измените свой генератор на VS 2019:

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