使用Visual Studio的“打开文件夹”功能时,IDE会在特殊的json文件中搜索项目设置和配置。对于CPP项目,这可能是CppProperties.json。对于CMake项目,可能是CMakeSettings.json。
此json文件包含一个或多个“配置”(例如“ Debug”或“ Release”)的集合。我将以最近的CMake项目为例:
"configurations": [
{
"name": "ARM-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [
"gcc-arm"
],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"intelliSenseMode": "linux-gcc-arm",
"variables": [
{
"name": "CMAKE_TOOLCHAIN_FILE",
"value": "${workspaceRoot}/cmake/arm-none-eabi-toolchain.cmake"
}
]
},
{
"name": "ARM-Release",
"generator": "Ninja",
"configurationType": "Release",
"inheritEnvironments": [
"gcc-arm"
],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"intelliSenseMode": "linux-gcc-arm",
"variables": [
{
"name": "CMAKE_TOOLCHAIN_FILE",
"value": "${workspaceRoot}/cmake/arm-none-eabi-toolchain.cmake"
}
]
}
如您所见,我有两个配置具有几乎相同的属性。
我的问题:是否可以定义一次公共/共享属性 ,以允许配置继承它们并避免重复我自己?
答案 0 :(得分:0)
更简单的方法是在全局级别(任何配置之外)定义环境,例如:
{
"environments": [
{
"namespace" : "env",
"varName": "varValue"
}
],
然后,您可以在需要的地方重复使用它,例如:
"cmakeCommandArgs": "${env.varName}",
您还可以拥有多个环境,然后重复使用它们,如下所示:
{
"environments": [
{
"environment": "env1",
"namespace": "env",
"varName": "varValueEnv1"
},
{
"environment": "env2",
"namespace": "env",
"varName": "varValueEnv2"
}
],
"configurations": [
{
"name": "x64-Release",
"inheritEnvironments": [
"msvc_x64_x64", "env2"
],
"cmakeCommandArgs": "${env.varName}",
.....
}
]
“ x64发行版”将在名为“ env2”(命名空间“ env”)的环境中继承变量的值