【问题标题】:Visual Studio with CMake带有 CMake 的 Visual Studio
【发布时间】:2019-02-08 20:49:12
【问题描述】:

Visual Studio 中是否有任何方法可以让您的项目CMakeLists.txt 文件控制所有内容并且没有 VS 覆盖值?

意思是如果我在我的CMakeLists.txt 文件中设置CMAKE_INSTALL_PREFIX,Visual Studio 会覆盖这个值。我知道我可以在 Visual Studio 中将 CMakeSettings.json 设置为我想要的位置,但我想在 cmake 中控制我的整个构建系统,而不必维护 cmake 和 Visual Studio。

注意:我使用的是 VS 17。

【问题讨论】:

  • 你需要安装路径做什么?您通常不需要在 dev/build/test/dev/build/test 循环中使用它。我经常将构建目录设置为一个公共目录并从那里运行。
  • "如果我在我的 CMakeLists.txt 文件中设置 CMAKE_INSTALL_PREFIX,Visual Studio 会覆盖此值。" - 这取决于您如何准确地设置此变量。显示您的代码。参见例如that my answer关于设置默认安装前缀
  • @Tsyvarev 你的想法似乎行不通。我曾尝试在项目之前和之后放置它,但似乎都不起作用。它一直安装在 VS 在命令行中设置的 VS 安装路径中。
  • @Tsyvarev 看起来我犯了一个错误,您的评论已经生效并且正在安装在正确的文件夹中。

标签: c++ visual-studio cmake


【解决方案1】:

您可以在 CMakeSettings.json 中创建 "Open Existing Cache" 配置。 Visual Studio 仅允许您构建或安装,但不会以任何方式生成或更改 CMake 缓存。

这仅在 Visual Studio 2019 Preview 中可用。

要利用此功能,您可以:

  • 使用菜单项File -> Open -> CMake 并选择您要处理的构建目录的CMakeCache.txt 文件。请记住,Visual Studio 会自动打开 CMakeCache.txt 文件中指定的源目录。

  • 通过在编辑 CMakeSettings.json 时右键单击 JSON 文本编辑器或在 CMake 设置 UI 编辑器上添加新配置来创建新的“现有缓存”配置。有两个配置模板:

    • 打开现有缓存:在 Windows 机器上构建/调试时使用此模板;
    • 远程打开现有缓存:在远程 Unix 机器上构建/调试时使用此缓存;

【讨论】:

    【解决方案2】:

    在 VS 2017 之前,您可以使用 cmakeCMakeLists.txt 生成 Visual Studio 解决方案。见Using CMake to generate Visual Studio C++ project files

    在这个工作流程中,VS 不会覆盖任何内容,因为它是 CMake 和 VS 之间的松散耦合。您仍然可以对较新版本的 VS 执行相同操作,并获得 CMake 和 VS 的全部优势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      相关资源
      最近更新 更多