如何为MSVS2019的CMake项目设置Target Platform Version与Platform Toolset
MSVC CMake项目平台版本与工具集配置方法
VS配置项与CMake参数的对应关系
普通VS项目中需要修改的两个配置项和CMake参数的对应关系如下:
- Target Platform Version(目标平台版本):对应CMake内置变量
CMAKE_SYSTEM_VERSION - Platform Toolset(平台工具集):对应CMake内置变量
CMAKE_GENERATOR_TOOLSET,也可以在生成时通过-T参数直接指定
普通VS项目的设置项示意图如下:
配置方式
方式1:在CMakeLists.txt中指定
需要注意变量声明必须放在project()指令之前才会生效,示例代码如下:
cmake_minimum_required(VERSION 3.15) # 配置目标平台版本为8.1 set(CMAKE_SYSTEM_VERSION 8.1 CACHE STRING INTERNAL FORCE) # 配置平台工具集为v140 set(CMAKE_GENERATOR_TOOLSET "v140" CACHE STRING INTERNAL FORCE) # 声明项目 project(你的项目名称) # 后续其他CMake逻辑
方式2:修改VS2019 CMake项目的CMakeSettings.json
如果你不想修改CMakeLists.txt,可以直接编辑VS自动生成的CMakeSettings.json配置文件,在对应配置项下指定工具集和平台版本参数即可,示例如下:
{ "configurations": [ { "name": "x64-Debug", "generator": "Visual Studio 16 2019", "configurationType": "Debug", "buildRoot": "${projectDir}\\out\\build\\${name}", "installRoot": "${projectDir}\\out\\install\\${name}", "cmakeCommandArgs": "", "buildCommandArgs": "", "ctestCommandArgs": "", "inheritEnvironments": [ "msvc_x64_x64" ], // 指定工具集为v140 "toolset": "v140", "variables": [ { "name": "CMAKE_SYSTEM_VERSION", "value": "8.1", "type": "STRING" } ] } ] }
方式3:命令行生成时直接指定
如果你习惯用命令行生成VS解决方案,直接在cmake生成命令中携带对应参数即可:cmake -G "Visual Studio 16 2019" -A x64 -T v140 -DCMAKE_SYSTEM_VERSION=8.1 你的CMakeLists.txt所在路径
内容的提问来源于stack exchange,提问作者theNotSoPro
相关产品推荐
相关产品推荐

