diff --git a/CHANGELOG.md b/CHANGELOG.md index 792c8dd42..b328a5e13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## 1.24 +Features: +- Add support for the FASTBuild generator (CMake 4.2+). [#4690](https://github.com/microsoft/vscode-cmake-tools/pull/4690) + Bug Fixes: - Update testing framework to fix bugs when running tests of CMake Tools without a reliable internet connection. [#4891](https://github.com/microsoft/vscode-cmake-tools/pull/4891) [@cwalther](https://github.com/cwalther) diff --git a/docs/configure.md b/docs/configure.md index f3f548a1f..dc4349b5e 100644 --- a/docs/configure.md +++ b/docs/configure.md @@ -16,6 +16,7 @@ The following concepts will help you understand how CMake Tools interacts with C |Generator |Description| |---------|---------| |Ninja | Emits files for the [Ninja build tool](https://ninja-build.org). This is the generator CMake Tools tries first, unless configured otherwise. See [cmake.preferredGenerators](cmake-settings.md#cmake-settings). | + |FASTBuild | Emits files for the [FASTBuild build tool](https://www.fastbuild.org/). Requires CMake 4.2+. | |Makefile | Emits a `Makefile` for the project that can be built via `make`.| |Visual Studio | Emits visual studio solutions and project files. There are many different Visual Studio generators, so it is recommended to let CMake Tools automatically determine the appropriate generator.| diff --git a/src/drivers/cmakeDriver.ts b/src/drivers/cmakeDriver.ts index 4168bc64c..cd8f6f933 100644 --- a/src/drivers/cmakeDriver.ts +++ b/src/drivers/cmakeDriver.ts @@ -1062,7 +1062,8 @@ export abstract class CMakeDriver implements vscode.Disposable { isCommonGenerator(genName: string): boolean { return genName === 'Ninja' || genName === 'Ninja Multi-Config' || genName === 'MinGW Makefiles' || genName === 'NMake Makefiles' || - genName === 'Unix Makefiles' || genName === 'MSYS Makefiles'; + genName === 'Unix Makefiles' || genName === 'MSYS Makefiles' || + genName === 'FASTBuild'; } /** @@ -1078,6 +1079,9 @@ export abstract class CMakeDriver implements vscode.Disposable { if (gen_name === 'Ninja' || gen_name === 'Ninja Multi-Config') { return await this.testHaveCommand('ninja') || this.testHaveCommand('ninja-build'); } + if (gen_name === 'FASTBuild') { + return this.testHaveCommand('fbuild'); + } if (gen_name === 'MinGW Makefiles') { return platform === 'win32' && this.testHaveCommand('mingw32-make'); } @@ -1472,6 +1476,7 @@ export abstract class CMakeDriver implements vscode.Disposable { "Unix Makefiles", "Ninja", "Ninja Multi-Config", + "FASTBuild", "Watcom WMake", "CodeBlocks - MinGW Makefiles", "CodeBlocks - NMake Makefiles",