Я недавно завладел проектом Windows, написанным на C #, и сумел создать CMakeLists, чтобы можно было создавать решение на лету и создавать его с помощью Visual Studio.
Это происходит какзамена устаревшего файла * .sln, который все разработчики проверяли в репозитории. Все идет нормально. Теперь я хотел бы быть более конкретным в отношении целевой платформы и разрешить «Любой процессор», как это делало упомянутое устаревшее решение. Точнее, я бы хотел, чтобы файлы * .csproj показывали:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'" Label="Configuration">
Я следил за этим потоком GitLab , но добавление target_compile_options(MyProject PRIVATE "/platform:anycpu")
или set(CMAKE_CSharp_FLAGS "/platform:anycpu")
добавляет только <PlatformTarget>anycpu</PlatformTarget>
в соответствующую группу PropertyGroup вместо преобразования «Release | x64» в «Release | AnyCPU»:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<PlatformTarget>anycpu</PlatformTarget>
В проекте есть основной файл CMakeLists.txt, который добавляет подкаталоги (add_subdirectory). Подпроект CMakeLists структурирован следующим образом:
cmake_minimum_required(VERSION 3.10)
project(MyProject VERSION 1.0.0 LANGUAGES CSharp)
include(CSharpUtilities)
add_executable(MyProject...)
csharp_set_designer_cs_properties(...)
csharp_set_xaml_cs_properties(...)
target_compile_options(MyProject PRIVATE "/platform:anycpu" )
set_source_files_properties(...)
Я довольно зациклен на этом, поскольку это имеет значение для TeamCity, который, похоже, ищет конкретные пары {Configuration, Platform} непосредственно путем синтаксического анализафайлы * .csproj, и жалуются, если не могут найти «Release | AnyCPU».
Большое спасибо за любые подсказки.