0

初めて VS2019 で CMake を試していますが、その仕組みについて混乱しています。これは、msvc_x64_x64 ツールセットを使用した Windows 10 です。

動的リンクを使用したい静的ライブラリを作成する CMake プロジェクトがあります。デフォルトの CMakeSettings.json には変数が含まれています

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

CMakeLists.txt はこれをオーバーライドしないので、私には良さそうです。

ただし、生成された lib ファイルは静的リンクを使用しているようで、別のプロジェクトが /MDd ではなくランタイム ライブラリ /MTd を使用してリンクできます。

そのため、別の場所からコンパイラ フラグを取得して CMakeSettings.json 内のフラグを無視しているか、CMAKE_CXX_FLAGS_DEBUG 以外の変数があるようです。

CMakeSettings.json 変数を使用するにはどうすればよいですか?

これが現在の CMakeSettings.json ファイルです

{
  "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": []
    }
  ]
}
4

1 に答える 1