使用 CMakePresets.json 的 CLion 项目无法找到 vcpkg

问题描述 投票:0回答:1

我有一个使用 CMakePresets.json 的 CLion 项目设置,我想使用 vcpkg 来使用它。 我指定了 vcpkg 工具链的位置,但 CLion 似乎没有考虑到这一点,并且 vcpkg 条目都显示为灰色,并且我收到有关无法找到我通过 vcpkg 安装的任何库的 CMake 构建错误。 CLion project using CMakePresets.json, CLion is not able to locate vcpkg despite its location being provided CMake Errors on not finding the 'fmt' library installed via vcpkg

但是,如果我创建一个新的 CLion 项目并且不使用 CMakePresets.json,CLion 能够很好地找到 vcpkg,并且我不会收到任何有关 CMake 无法找到库的错误。 Sample CLion project, not using CMakePresets.json is able to find vcpkg

此项目中的 CLion 配置文件是否缺少某些内容,导致无法检测到 vcpkg 安装位置?

下面是 CLion 项目使用的完整 CMakePresets.json 文件:

{
  "version": 6,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 29,
    "patch": 0
  },
  "include": [],
  "configurePresets": [
    {
      "name": "base",
      "displayName": "Base Config",
      "description": "Base configuration using Ninja generator",
      "generator": "Ninja",
      "hidden": true,
      "toolchainFile": "D:\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake",
      "cacheVariables": {
        "CMAKE_CXX_STANDARD": "23"
      },
      "warnings": {
        "dev": true,
        "uninitialized": true
      },
      "errors": {
        "dev": true,
        "deprecated": true
      }
    },
    {
      "name": "debug",
      "inherits": "base",
      "displayName": "Debug",
      "description": "Debug configuration using Ninja generator",
      "binaryDir": "${sourceDir}/build/debug",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_CXX_FLAGS_DEBUG": "-O1"
      }
    },
    {
      "name": "release",
      "inherits": "base",
      "displayName": "Release",
      "description": "Release configuration using Ninja generator",
      "binaryDir": "${sourceDir}/build/release",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_CXX_FLAGS_RELEASE": "-O3"
      }
    }
  ],
  "buildPresets": [
    {
      "name": "debug",
      "displayName": "Debug",
      "configurePreset": "debug",
      "verbose": true
    },
    {
      "name": "release",
      "displayName": "Release",
      "configurePreset": "release",
      "verbose": true
    }
  ],
  "workflowPresets": [],
  "testPresets": [],
  "packagePresets": [],
  "vendor": {}
}
cmake clion vcpkg cmake-presets
1个回答
0
投票

我现在已经半工作了(我可以使用 vcpkg 库,但集成的 vcpkg 不适用于 CMakePresets.json 项目),这里有一些我注意到的事情:

  1. 即使配置/构建预设显示在 CLion 配置文件下,它们也不是 CLion 配置文件。因此,它们不会显示为与 CLions 集成 vcpkg 关联的选项,因此它始终显示为灰色。

  2. 使用 CLions 集成 vcpkg 安装库时,如果您使用 CMakePresets,则必须安装正确的三元组。您不能使用“让 vcpkg 决定”选项。如果您使用 CLion 配置文件,集成的 vcpkg 似乎可以确定要使用哪个三元组,但如果您没有使用 CLion 配置文件,那么它将选择适合您系统的默认三元组。 (就我而言,我没有安装 VS,因此 x64/x86 Windows 三元组无法工作,这是使用 CMakePresets 在项目中下载的内容。在使用 CLion Profiles 的示例项目中,集成的 vcpkg 正确地认为我需要x64/x86 MinGW 动态库)。

  3. 我最终自己在我的机器上安装了 vcpkg,而不是让 CLion 安装它。这应该不重要,因为 CLion 集成的 vcpkg 似乎只是从 github 中提取 vcpkg 并运行引导程序,但也许它做了其他一些不那么明显的事情。就运行 cmake 而言,我自己安装 vcpkg 似乎已经使一切正常工作/可识别。

© www.soinside.com 2019 - 2024. All rights reserved.