<h1 align=center> <img align=center width=48 src="res/logo-margin-bottom.png" alt="CMake Logo"/> CMake Tools </h1>

<p align=center ><i>Enhancing CMake development in VS Code.</i></p>

<div align=center>
    <img alt="VS Code" src="https://img.shields.io/badge/VSCode-7d57c2?style=for-the-badge&logo=visual%20studio%20code&logoColor=white"/>
    <img alt="CMake" src="https://img.shields.io/badge/CMake-7d57c2?style=for-the-badge&logo=cmake&logoColor=white"/>
    <img alt="C" src="https://img.shields.io/badge/C-7d57c2?style=for-the-badge&logo=c&logoColor=white"/>
    <img alt="C++" src="https://img.shields.io/badge/C%2B%2B-7d57c2?style=for-the-badge&logo=c%2B%2B&logoColor=white"/>
</div>

<div align=center>
    <img alt="VS Code Marketplace Downloads" src="https://img.shields.io/visual-studio-marketplace/d/ms-vscode.cmake-tools?style=for-the-badge&color=064f8c&cacheSeconds=3600&link=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dms-vscode.cmake-tools">
    <img alt="VS Code Marketplace Version" src="https://img.shields.io/visual-studio-marketplace/v/ms-vscode.cmake-tools?style=for-the-badge&color=be2128&cacheSeconds=3600&link=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%2Fms-vscode.cmake-tools%2Fchangelog">
    <img alt="Closed Issues" src="https://img.shields.io/github/issues-closed/microsoft/vscode-cmake-tools?style=for-the-badge&color=249847&cacheSeconds=3600&link=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fvscode-cmake-tools%2Fissues">
</div>

<br/>
<img style="width: 100%" src="res/graphics/cmake-tools-banner.png" alt="CMake Tools Banner"/>

## Introduction
[CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) provides the native developer a full-featured, convenient, and powerful workflow for CMake-based projects in Visual Studio Code. It simplifies advanced configurations with support for CMake presets and enhances the development experience by supporting rich IntelliSense features, a built-in debugger for CMake scripts, and configurable CMake tasks. Its customizable interface allows for efficient tailored control of projects, while CTest integration ensures straightforward test execution and monitoring.

<details open>
<summary>
 Features
</summary><br/>

<p align=center>
    <img width="49%" src="res/graphics/presets-support-feature.png" alt="Presets Support"/>
&nbsp;
    <img width="49%" src="res/graphics/cmake-language-service-feature.png" alt="Built-In CMake Language Services"/>
</p>
<p align=center>
    <img width="49%" src="res/graphics/cmake-debugging-feature.png" alt="CMake Debugging"/>
&nbsp;
    <img width="49%" src="res/graphics/status-and-sidebar-feature.png" alt="Project Status"/>
</p>
<p align=center>
    <img width="49%" src="res/graphics/cmake-commands-feature.png" alt="CMake Commands"/>
&nbsp;
    <img width="49%" src="res/graphics/project-outline-feature.png" alt="Project Outline"/>
</p>
<p align=center>
    <img width="49%" src="res/graphics/tasks-feature.png" alt="Tasks"/>  
&nbsp;
    <img width="49%" src="res/graphics/test-integration-feature.png" alt="Test Integration"/>
</p>  

</details>

## Setup and Installation
Ensure CMake is available on your system. A couple of options are:
- [Download CMake](https://cmake.org/download/).
- Utilize the CMake that is bundled with a Visual Studio installation.

Install the CMake Tools extension from the Extensions pane within VS Code or from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools).

Ensure that either you've added your CMake executable to your PATH, or you've adjusted the `cmake.cmakePath` setting to point to your CMake executable. 

## Resources
- [Docs](docs/README.md) for comprehensive documentation.
- [Quick Start](https://code.visualstudio.com/docs/cpp/CMake-linux) to get up and running fast.
- [Github](https://github.com/microsoft/vscode-cmake-tools) for source code, issues, and contributing.

## Contributing
We encourage an open and collaborative development environment and welcome all contributions. Whether you're fixing bugs, proposing new features, or improving our documentation - we invite you to join the CMake Tools community. Please review our [contribution guidelines](CONTRIBUTING.md) and adhere to our [code of conduct](https://opensource.microsoft.com/codeofconduct/).

You can file issues with us using one of our templates:

[Bug Report](https://github.com/microsoft/vscode-cmake-tools/issues/new?template=bugreport.yml): If you see an error message or encounter an issue while using the CMake Tools extension.

[Feature Request](https://github.com/microsoft/vscode-cmake-tools/issues/new?template=featurerequest.yml): If you have a suggestion or need a feature that would enhance development.

[Documentation Request](https://github.com/microsoft/vscode-cmake-tools/issues/new?template=docrequest.yml): Requesting changes or additions to the [CMake Tools documentation](docs/README.md).

##

### Microsoft Open Source Code of Conduct

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact opencode@microsoft.com with any additional questions or comments.

### Data/Telemetry

This extension collects usage data and sends it to Microsoft to help improve our products and services. Collection of telemetry is controlled via the same setting provided by Visual Studio Code: `"telemetry.enableTelemetry"`. Read our [privacy statement](https://go.microsoft.com/fwlink/?LinkId=521839) to learn more.

### Credits

This project was started by [@vector-of-bool](https://github.com/vector-of-bool) and is now currently maintained by Microsoft.

### Contributors

<a href="https://github.com/microsoft/vscode-cmake-tools/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=microsoft/vscode-cmake-tools" alt="Contributors"/>
</a>
