在运行Flutter桌面应用时遇到CMake错误。

12
当我尝试启动flutter桌面应用程序时,出现了以下错误:
"CMakeLists.txt:2 (project)"中的CMake错误: 生成器Visual Studio 16 2019找不到任何Visual Studio实例。 正在构建Windows应用程序... 异常:无法生成构建文件"
我的操作如下:
1. 安装了带有“C ++桌面开发”和“通用Windows平台开发”的Visual Studio 2022。 2. 运行以下命令:
flutter config --enable-windows-desktop flutter create . flutter run -d windows
我还尝试使用开发通道:
flutter channel dev flutter upgrade flutter config--enable-windows-uwp-desktop 当我运行"flutter devices"和"flutter doctor"命令时,看到如下输出:
flutter devices
4个已连接设备: Windows(桌面)• windows • windows-x64 • Microsoft Windows [版本10.0.22000.318] Windows(UWP)(桌面)•winuwp•windows-uwp-x64•Chrome(Web)•chrome•web-javascript•Google Chrome 94.0.4606.81 Edge(Web)•edge•web-javascript•Microsoft Edge 95.0.1020.44
flutter doctor [√] Flutter(频道dev, 2.6.0-11.0.pre,在Microsoft Windows[版本10.0.22000.318]上,语言环境为en-US) [√] Android工具链-为Android设备开发(Android SDK版本31.0.0) [√] Chrome-为Web开发 [√] Visual Studio-为Windows开发(Visual Studio Community 2022 17.0.0) [√] Android Studio(版本2020.3) [√] VS Code(版本1.61.1) [√] 已连接设备(可用4个) • 没有发现问题!
8个回答

17

2022年2月3日更新:Flutter的最新版本2.10稳定版已经解决了这个问题,并支持Windows的稳定桌面。

更新:Flutter beta频道(2.9.0-0.1.pre及以后)已经修复了此问题。

根据Flutter主要存储库中的此问题,在2.9版本之前的Flutter不支持Visual Studio 2022。如果您想构建针对Windows的应用程序,则必须安装VS 2019和2022,或者使用此解决方法

当前的解决方法是:下载适当的Flutter版本,在 https://github.com/flutter/flutter/blob/master/packages/flutter_tools/lib/src/windows/build_windows.dart#L25-L28 中编辑_cmakeVisualStudioGeneratorIdentifier,将其更改为适当的CMake Visual Studio生成器。您可以在此页面上获取当前可用的CMake Visual Studio生成器: https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#id13

_cmakeVisualStudioGeneratorIdentifier默认带有CMake Visual Studio 2019生成器。如果您将使用CMake Visual Studio 2022生成器,请确保您的Visual Studio 2022发行版包含Cmake 3.21或更高版本,请参阅 https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2017%202022.html了解详情。

在Windows上应用这些更改:

  • 编辑path\to\flutter\packages\flutter_tools\lib\src\windows\build_windows.dart,并将第28行的常量从'Visual Studio 16 2019'更改为'Visual Studio 17 2022'
  • 删除path\to\flutter\bin\cache\中的flutter_tools.stampflutter_tools.snapshot(以便Flutter使用您上面更改的新源代码重新生成其构建工具)
  • 在项目路径中,运行flutter clean以删除引用错误Visual Studio版本的缓存CMake文件
  • 在项目路径中,运行flutter run -d windows以重新启动构建(这次成功)

11
  1. 下载Visual Studio 17 2022
  2. 从项目中删除CMakeLists.txt文件(路径:your_prject_name/windows/CMakeLists.txt)
  3. 在终端中运行flutter clean
  4. 然后运行flutter create .

谢谢你救了我一命 - undefined

1

请前往flutter/packages/flutter_tools/lib/src/windows目录,打开build_windows.dart文件,在第24行更改以下内容:

 const int kCurrentUwpTemplateVersion = Visual Studio 17 2022;

保存文件然后运行Flutter。选择Windows设备。现在它将在没有任何错误的情况下运行。


1
这个黑客技巧在3.3.10版本中不再起作用(如果它曾经起过作用的话),该文件不包含kCurrentTemplateVersion变量。 - Daniel Leiszen

1
尝试删除Windows SDK,然后重新安装它。 源链接

1

我终于找到了解决方案。 Flutter正在项目文件夹\build\windows\runner\Debug\data\app.so中寻找app.so文件; 但实际上,app.so文件在项目文件夹\build\windows\runner中。
为了解决问题,只需将app.so文件从项目文件夹\build\windows\runner移动到项目文件夹\build\windows\runner\Debug\data\即可。


1

在我的情况下,只需运行flutter clean && flutter pub即可解决问题。


"flutter pub" 缺少子命令。 - Aseem
在Android Studio中运行此命令后仍然出现相同的错误:flutter clean && flutter pub get - Aseem
在此之后,你需要运行 'flutter pub get'。 - undefined

1

我现在遇到了这个错误很多次,尝试了各种方法,但有一件事对我解决有帮助,就是将Flutter项目提升到Windows文件结构的更高层级,因为Windows(以及显然CMake)在太深的位置创建或写入二进制文件时会出问题。


0

您可以复制

lib/main.dart

这个文件,并通过在 PowerShell 中运行以下命令来重新创建 Flutter 项目:

``` flutter create ```

您可以选择任意目录进行操作。

flutter create chatapp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接