初めて 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": []
}
]
}