首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在CMakeSettings.json中激活VS2019变量

如何在CMakeSettings.json中激活VS2019变量
EN

Stack Overflow用户
提问于 2020-11-09 19:49:34
回答 2查看 2K关注 0票数 1

我第一次尝试了CMake在VS2019中,并且对它的工作方式感到困惑。这是在Windows 10中使用msvc_x64_x64工具集。

我有一个创建静态库的CMake项目,我想使用动态链接。默认的CMakeSettings.json包括变量

CMAKE_CXX_FLAGS_DEBUG = /MDd /Zi /Ob0 /Od /RTC1

The的CMakeLists.txt不覆盖这一点,所以在我看来很不错。

但是,生成的库文件似乎使用静态链接,另一个项目可以使用运行时库/MTd而不是/MDd链接到它。

因此,它似乎是从其他地方获取编译器标志,而忽略了CMakeSettings.json中的标记,或者除了CMAKE_CXX_FLAGS_DEBUG之外还有其他变量。

如何让它使用CMakeSettings.json变量?

下面是当前的CMakeSettings.json文件

代码语言:javascript
复制
{
  "configurations": [
    {
      "name": "x64-Debug",
      "generator": "Visual Studio 16 2019 Win64",
      "configurationType": "Debug",
      "inheritEnvironments": [ "msvc_x64_x64" ],
      "buildRoot": "${projectDir}\\out\\build\\${name}",
      "installRoot": "${projectDir}\\out\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "",
      "ctestCommandArgs": "",
      "variables": [
        {
          "name": "CMAKE_CXX_FLAGS_DEBUG",
          "value": "/MDd /Zi /Ob0 /Od /RTC1",
          "type": "STRING"
        }
      ]
    },
    {
      "name": "x64-Release",
      "generator": "Ninja",
      "configurationType": "RelWithDebInfo",
      "buildRoot": "${projectDir}\\out\\build\\${name}",
      "installRoot": "${projectDir}\\out\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "",
      "ctestCommandArgs": "",
      "inheritEnvironments": [ "msvc_x64_x64" ],
      "variables": []
    }
  ]
}
EN

回答 2

Stack Overflow用户

发布于 2020-11-10 18:12:52

找到了!

库包含来自GoogleTest的文件,并且有一个包含行的文件internal_utils.cmake

代码语言:javascript
复制
        string(REPLACE "/MD" "-MT" ${flag_var} "${${flag_var}}")

因此,在使用CMakeSettings.json变量之前,它们会被覆盖。

添加CMake命令参数

代码语言:javascript
复制
-Dgtest_force_shared_crt=ON

说服它停下来。

谢谢你的帮助。

票数 0
EN

Stack Overflow用户

发布于 2022-09-08 15:31:56

注意,在VS2019中,正确的方法是使用CMakePresets.json。CMakeSettings.json被否决了。要启用对它们的支持,需要启用一个选项。有关更多信息,请参见此链接https://learn.microsoft.com/en-us/cpp/build/cmake-presets-vs?view=msvc-160

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64758336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档