From 0b9a08c6206b9830ab6abb871049d5b1365837c7 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Fri, 31 May 2024 21:05:21 +0000 Subject: [PATCH] Set cppStandard from ros version Create a function that looks up ros version setting and then sets cppStandard variable accordingly ROS1:https://www.ros.org/reps/rep-0003.html ROS2:https://www.ros.org/reps/rep-2000.html Signed-off-by: Jonathan --- src/ros/build-env-utils.ts | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/ros/build-env-utils.ts b/src/ros/build-env-utils.ts index 78d16f65..3176ee1e 100644 --- a/src/ros/build-env-utils.ts +++ b/src/ros/build-env-utils.ts @@ -84,7 +84,7 @@ async function updateCppPropertiesInternal(): Promise { cppProperties.configurations[0].intelliSenseMode = "gcc-" + process.arch cppProperties.configurations[0].compilerPath = "/usr/bin/gcc" cppProperties.configurations[0].cStandard = "gnu11" - cppProperties.configurations[0].cppStandard = "c++14" + cppProperties.configurations[0].cppStandard = getCppStandard() // read the existing file try { @@ -138,3 +138,29 @@ function updatePythonAutoCompletePathInternal() { function updatePythonAnalysisPathInternal() { vscode.workspace.getConfiguration().update(PYTHON_ANALYSIS_PATHS, extension.env.PYTHONPATH.split(path.delimiter)); } + +function getCppStandard() { + switch (vscode.workspace.getConfiguration().get("ros.distro")) + { + case "kinetic": + case "lunar": + return "c++11" + case "melodic": + case "noetic": + case "ardent": + case "bouncy": + case "crystal": + case "dashing": + case "eloquent": + case "foxy": + return "c++14" + case "galactic": + case "humble": + case "iron": + case "jazzy": + case "rolling": + return "c++17" + default: + return "c++17" + } +} \ No newline at end of file