微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Microsoft Visual Studio 2019中将现有的CMakeCache.txt用于“忍者多配置”生成器?

如何解决如何在Microsoft Visual Studio 2019中将现有的CMakeCache.txt用于“忍者多配置”生成器?

我目前正在尝试使用我们基于CMake的Convention-over-configuration构建系统来改善Microsoft Visual Studio(MSVS)2019中的CMake用户体验。

在MSVC 2019之前,我们始终使用“ MSBuild”生成器(例如"Visual Studio 2017")。但是由于Microsoft states以后的MSVS更新能够打开现有的CMakeCache.txt,所以我想尝试一下此MSVS功能

我想要实现的目标:使用生成CMakeCache.txt使MSVS 2019“了解” "Ninja Multi-Config"文件

当前,我们的构建系统在配置步骤中生成一个CMakeSettings.json(与CMakeLists.txt文件位于同一目录)文件

{
  "configurations": [
    {
      "name": "x64-windows-msvc1927-static-md-Debug","cacheRoot": "C:/_bld","cmakeExecutable": "E:/dev/native/cmake/cmake-3.18.2-x64/bin/cmake.exe","configurationType": "Debug"
    },{
      "name": "x64-windows-msvc1927-static-md-Release","configurationType": "Release"
    },{
      "name": "x64-windows-msvc1927-static-md-RelWithDebInfo","configurationType": "RelWithDebInfo"
    }
  ]
}

我们为什么要这样做?我们必须显式设置"cmakeExecutable",否则MSVS使用MSVS随附的CMake版本。失败是因为我们正在使用v3.18(并且不想依赖于两个不同的CMake版本来构建软件)。

一切看起来都很好,因为所有三个构建配置都显示在MSVS IDE的“构建配置”组合框中。

但是,无论选择什么,IDE始终会构建并运行Debug构建配置。选择另一个构建配置根本没有任何作用。

恐怕(尚)无法通过MSVS达到上述目标,因为它根本不了解"Ninja Multi-Config"生成器。

问题是:我无法将生成器更改为"Ninja",因为那样会触发现有缓存的CMake警告。

  1. 我是否必须首先使用"Ninja"生成器(以及不同的构建树)?
  2. 在MSVS 2019中使用“忍者”作为多配置生成器的问题是否有真正的解决方案?
  3. 如果问题1的答案为“是”或问题2的答案为“否”:是否应该使用生成"Visual Studio 2019"更简单?那时不使用此生成器,根本看不到任何UX优势。

使用以下环境:

  • CMake v3.18.2
  • Microsoft Visual Studio 2019 v16.7.5
  • 忍者1.10.1

解决方法

CMake上游,是Ninja Multi-Config生成器的作者。一些事情:

  1. 如发现的那样,您无法更改现有树的生成器。例如,如果树是使用Ninja构建的,则以后无法将其更改为Ninja Multi-Config。最好的办法是启动一个新的构建树-擦除旧的树并重新开始,或者在其他目录中开始新的树。
  2. AFAIK,Microsoft尚未添加对Ninja Multi-Config的支持。我当然希望他们在某个时候这样做,因为这是我们建议使用CMake的IDE的生成器。但是,这并不重要,因为...
  3. 是的,我非常确定Visual Studio可以使用生成的Visual Studio解决方案打开CMakeCache.txt。即使不能,您当然也可以直接打开Visual Studio解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。