From c204259f2a6e70d8e4b6fc0d7f72a9c41efbb904 Mon Sep 17 00:00:00 2001 From: Matt Krass Date: Tue, 16 Dec 2025 11:07:59 -0500 Subject: [PATCH 1/4] Support cmakeSettings field in kits files --- docs/cmake_kits.md | 3 +-- lua/cmake-tools/kits.lua | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/cmake_kits.md b/docs/cmake_kits.md index 33d7db2b..8ba1f7ee 100644 --- a/docs/cmake_kits.md +++ b/docs/cmake_kits.md @@ -51,5 +51,4 @@ You can also define general global kits in somewhere. To do this, you will have 1. Kits scan is not supported. 2. Option `visualStudio` and `visualStudioArchitecture` is not supported. 3. Option `preferredGenerator` is not supported. -4. Option `cmakeSettings` is not supported. -5. Option `environmentSetupScript` is only supported in the experimental terminal mode. +4. Option `environmentSetupScript` is only supported in the experimental terminal mode. diff --git a/lua/cmake-tools/kits.lua b/lua/cmake-tools/kits.lua index b0012e6d..047b85cb 100644 --- a/lua/cmake-tools/kits.lua +++ b/lua/cmake-tools/kits.lua @@ -123,6 +123,11 @@ function kits.build_env_and_args(kit_name, escape, cwd, global_kits_path) if kit.toolchainFile then add_args({ "-DCMAKE_TOOLCHAIN_FILE:FILEPATH=" .. kit.toolchainFile }) end + if kit.cmakeSettings then + for k, v in pairs(kit.cmakeSettings) do + add_args({ "-D" .. k .. ":STRING=" .. v }) + end + end if kit.environmentVariables then for k, v in pairs(kit.environmentVariables) do From 3f7a6aa42ca24a8190ae86724247a516bbd2a33d Mon Sep 17 00:00:00 2001 From: Matt Krass Date: Tue, 16 Dec 2025 14:25:40 -0500 Subject: [PATCH 2/4] Handle BOOL types --- lua/cmake-tools/kits.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lua/cmake-tools/kits.lua b/lua/cmake-tools/kits.lua index 047b85cb..9c2e133f 100644 --- a/lua/cmake-tools/kits.lua +++ b/lua/cmake-tools/kits.lua @@ -125,7 +125,11 @@ function kits.build_env_and_args(kit_name, escape, cwd, global_kits_path) end if kit.cmakeSettings then for k, v in pairs(kit.cmakeSettings) do - add_args({ "-D" .. k .. ":STRING=" .. v }) + if type(v) == "boolean" then + add_args({ "-D" .. k .. ":BOOL=" .. string.upper(string.format("%s", v)) }) + else + add_args({ "-D" .. k .. ":STRING=" .. string.format("%s", v) }) + end end end From 0348b3ea3871973db71b4f81df561997c59d9f75 Mon Sep 17 00:00:00 2001 From: Matt Krass Date: Tue, 20 Jan 2026 23:23:24 -0500 Subject: [PATCH 3/4] PR feedback --- lua/cmake-tools/kits.lua | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lua/cmake-tools/kits.lua b/lua/cmake-tools/kits.lua index 9c2e133f..e33cb559 100644 --- a/lua/cmake-tools/kits.lua +++ b/lua/cmake-tools/kits.lua @@ -126,9 +126,17 @@ function kits.build_env_and_args(kit_name, escape, cwd, global_kits_path) if kit.cmakeSettings then for k, v in pairs(kit.cmakeSettings) do if type(v) == "boolean" then - add_args({ "-D" .. k .. ":BOOL=" .. string.upper(string.format("%s", v)) }) + if escape then + add_args({ "-D" .. k .. ":BOOL=" .. '"' .. string.upper(tostring(v)) .. '"' }) + else + add_args({ "-D" .. k .. ":BOOL=" .. string.upper(tostring(v)) }) + end else - add_args({ "-D" .. k .. ":STRING=" .. string.format("%s", v) }) + if escape then + add_args({ "-D" .. k .. ":STRING=" .. '"' .. v '"' }) + else + add_args({ "-D" .. k .. ":STRING=" .. v }) + end end end end From c0b9809c66b34d76882d3aac520c9c10c0f28a94 Mon Sep 17 00:00:00 2001 From: Matt Krass Date: Sun, 8 Feb 2026 21:54:51 -0500 Subject: [PATCH 4/4] Fixup missing .. and formatting --- lua/cmake-tools/kits.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/cmake-tools/kits.lua b/lua/cmake-tools/kits.lua index e33cb559..ace0d6b2 100644 --- a/lua/cmake-tools/kits.lua +++ b/lua/cmake-tools/kits.lua @@ -133,7 +133,7 @@ function kits.build_env_and_args(kit_name, escape, cwd, global_kits_path) end else if escape then - add_args({ "-D" .. k .. ":STRING=" .. '"' .. v '"' }) + add_args({ "-D" .. k .. ":STRING=" .. '"' .. v .. '"' }) else add_args({ "-D" .. k .. ":STRING=" .. v }) end