CMake не устанавливает LangVersion для проекта C# - PullRequest
1 голос
/ 07 апреля 2020

Я пытаюсь сгенерировать C# проект для Visual Studio 2017 с CMake 3.16.3 , но у меня возникают проблемы с настройкой C# языковой версии. Даже если я указываю его в верхней части файла CMakeLists.txt следующим образом:

target_compile_options(<MyApp> PRIVATE "/langversion:latest")

Или вот так:

set(CMAKE_CSharp_FLAGS "/langversion:latest")

Внутри файла * .csproj он всегда устанавливается следующим образом: это:

<Project>
    ...
    <PropertyGroup>
        ...
        <AdditionalOptions>/langversion:latest</AdditionalOptions>
        ...
        <LangVersion>3</LangVersion>
        ...
    </PropertyGroup>
    ...
</Project>

Так что, независимо от того, какое значение я там поместил, это всегда версия 3 (минимальная версия). Без указания языковой версии устанавливается значение по умолчанию, а это lastMajor, версия 7.0.

До настоящего времени единственным способом решения этой проблемы является создание Directory.Build.props файл внутри папки сборки. И это выглядит так:

<Project>
    <PropertyGroup>
        <LangVersion>latest</LangVersion>
    </PropertyGroup>
</Project>

Я совершенно новичок в CMake, и его документация довольно сложна, поэтому я, вероятно, пропустил некоторые шаги. Или это ошибка в CMake, и есть ли у кого-нибудь лучшие решения этой проблемы?

Вот ссылка для проектов Страница Gitlab

Ответы [ 2 ]

2 голосов
/ 07 апреля 2020

Это ограничение CMake, которое только недавно было исправлено в версии 3.17.0. Вам необходимо установить CMake версии 3.17 и сгенерировать решения из командной строки.

См. эту проблему в системе отслеживания проблем CMake.

1 голос
/ 08 апреля 2020

Проблема была с Visual Studio 2017 . По умолчанию Visual Studio 2019 определяет C# языковую версию на основе версии платформы. Вот документация Microsoft .

tl; dr В основном просто обновить до Visual Studio 2019

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...