{"id":36235,"date":"2026-01-27T16:36:46","date_gmt":"2026-01-27T16:36:46","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=36235"},"modified":"2026-01-27T16:36:46","modified_gmt":"2026-01-27T16:36:46","slug":"visual-studio-code-cmake-tools-1-22-target-bookmarks-and-better-ctest-output","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/visual-studio-code-cmake-tools-1-22-target-bookmarks-and-better-ctest-output\/","title":{"rendered":"Visual Studio Code CMake Tools 1.22: Target bookmarks and better CTest output"},"content":{"rendered":"<p>We&#8217;re excited to announce the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode.cmake-tools\">latest 1.22 release of the CMake Tools extension<\/a> for Visual Studio Code. This update brings a host of new additions, including project outline updates for filtering and bookmarking CMake targets in large CMake projects and expanded CTest support to customize this output. To view the full list of updates with this release, please look at our <a href=\"https:\/\/github.com\/microsoft\/vscode-cmake-tools\/blob\/main\/CHANGELOG.md\">CHANGELOG<\/a>.<\/p>\n<p>This release features the following contributions from our open-source community. Thank you for your continued support!<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/microsoft\/vscode-cmake-tools\/pull\/4539\">Add bookmarks and filtering of outline view<\/a> by <a href=\"https:\/\/github.com\/bradphelan\">@bradphelan<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/microsoft\/vscode-cmake-tools\/pull\/4533\">Add pre-fill project name using current folder name<\/a> by <a href=\"https:\/\/github.com\/HO-COOH\">@ho-cooh<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/microsoft\/vscode-cmake-tools\/issues\/4510\">Add API v5 which adds presets api<\/a> by <a href=\"https:\/\/github.com\/OrkunTokdemir\">@OrkunTokdemir<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/microsoft\/vscode-cmake-tools\/pull\/4548\">Add output parser for include-what-you-use<\/a> by <a href=\"https:\/\/github.com\/malsyned\">@malsyned<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/microsoft\/vscode-cmake-tools\/issues\/4490\">In test explorer, associated CTest tests with outermost function or macro invocation that calls add_test() instead of with the add_test() call itself<\/a> by <a href=\"https:\/\/github.com\/malsyned\">@malsyned<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/microsoft\/vscode-cmake-tools\/issues\/4575\">Better support of cmake v4.1 and its error index files in cmake-file-api replies<\/a> by <a href=\"https:\/\/github.com\/JDESTM\">@STMicroelectronics<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/microsoft\/vscode-cmake-tools\/pull\/4501\">Fix bug in which clicking \u201cRun Test\u201d for filtered tests executed all tests instead<\/a> by <a href=\"https:\/\/github.com\/hippo91\">@hippo91<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/microsoft\/vscode-cmake-tools\/pull\/4552\">Fix auto-focusing the \u201cSearch\u201d input field in the CMake cache view<\/a> by <a href=\"https:\/\/github.com\/simhof-basyskom\">@simhof-basyskom<\/a><\/li>\n<\/ul>\n<h3>Project Outline view updates: Filter and bookmark your CMake Targets<\/h3>\n<p>Navigating through large CMake projects with many nested targets can sometimes be difficult. The Project Outline view has been updated to have filtering and bookmarking support, making it easier to manage your CMake targets.<\/p>\n<h5>Filter through complex target outlines<\/h5>\n<p>You can now filter the Project Outline view to quickly locate specific targets in large projects. This is especially useful when working with projects that generate dozens of targets across multiple subdirectories.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/cmake-filter.webp\"><img decoding=\"async\" class=\"size-full wp-image-36236 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/cmake-filter.webp\" alt=\"The option to filter is selected under the CMake Project outline view.\" width=\"885\" height=\"545\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/cmake-filter.webp 885w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/cmake-filter-300x185.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/cmake-filter-768x473.webp 768w\" sizes=\"(max-width: 885px) 100vw, 885px\" \/><\/a><\/p>\n<p>For example, you might filter targets by a feature area or naming convention.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/cmake-filter-2.webp\"><img decoding=\"async\" class=\"size-full wp-image-36237 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/cmake-filter-2.webp\" alt=\"CMake filtered to anything with Vehicles\" width=\"889\" height=\"537\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/cmake-filter-2.webp 889w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/cmake-filter-2-300x181.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/cmake-filter-2-768x464.webp 768w\" sizes=\"(max-width: 889px) 100vw, 889px\" \/><\/a><\/p>\n<h5>Bookmark commonly used CMake targets<\/h5>\n<p>CMake Tools now supports bookmarking commonly used targets so they appear in a dedicated\u00a0<strong>Bookmarks<\/strong> section in the CMake sidebar. This provides quick access to targets you build, debug, or run most often, without having to repeatedly search through the full project hierarchy.<\/p>\n<p>To bookmark a target, navigate to the desired target in the Project Outline view and select\u00a0<strong>Toggle Bookmark<\/strong>.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/toggle-bookmark.webp\"><img decoding=\"async\" class=\"size-full wp-image-36239 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/toggle-bookmark.webp\" alt=\"Option to Toggle Bookmark on hover over a given CMake targe.\" width=\"976\" height=\"487\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/toggle-bookmark.webp 976w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/toggle-bookmark-300x150.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/toggle-bookmark-768x383.webp 768w\" sizes=\"(max-width: 976px) 100vw, 976px\" \/><\/a><\/p>\n<p>This will add the selected target to the separate\u00a0<strong>Bookmarks<\/strong> section in the CMake sidebar. From here, commonly used targets can be built, debugged, or ran in the terminal.<\/p>\n<h2>Improved CTest failure output.<\/h2>\n<p>This release also improves the CTest experience by adding support for configurable failure patterns. With the new <strong>Failure Patterns<\/strong> setting, you can tell CMake Tools how to interpret test output so failures surface more useful and structured information.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/failure-patterns.webp\"><img decoding=\"async\" class=\"size-full wp-image-36240 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/failure-patterns.webp\" alt=\"The CMake CTest failure patterns setting which accepts regex for searching CTest output for additional details about failures.\" width=\"1044\" height=\"547\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/failure-patterns.webp 1044w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/failure-patterns-300x157.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/failure-patterns-1024x537.webp 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/failure-patterns-768x402.webp 768w\" sizes=\"(max-width: 1044px) 100vw, 1044px\" \/><\/a><\/p>\n<p>This is particularly helpful for test frameworks where important failure details, such as diffs or assertion outputs, are embedded in test logs. Instead of manually digging through raw output, you can define patterns that extract and highlight the relevant information directly after a test fails.<\/p>\n<p>For example, you can define how <code>CHECK_EQUAL<\/code> shows diffing straight to the user.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/Example-failure-patterns.webp\"><img decoding=\"async\" class=\"size-full wp-image-36241 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/Example-failure-patterns.webp\" alt=\"Example failure patterns setting where it checks the output of CHECK_EQUAL\" width=\"1046\" height=\"297\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/Example-failure-patterns.webp 1046w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/Example-failure-patterns-300x85.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/Example-failure-patterns-1024x291.webp 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/Example-failure-patterns-768x218.webp 768w\" sizes=\"(max-width: 1046px) 100vw, 1046px\" \/><\/a>This allows the user to have a transparent view of their test failures and quickly debug any test output.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/check-equal-failure.webp\"><img decoding=\"async\" class=\"size-full wp-image-36243 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/check-equal-failure.webp\" alt=\"Visual of check equal failure with expected and actuals\" width=\"1034\" height=\"551\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/check-equal-failure.webp 1034w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/check-equal-failure-300x160.webp 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/check-equal-failure-1024x546.webp 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2026\/01\/check-equal-failure-768x409.webp 768w\" sizes=\"(max-width: 1034px) 100vw, 1034px\" \/><\/a><\/p>\n<h2>What do you think?<\/h2>\n<p>Download <a href=\"https:\/\/code.visualstudio.com\/Download\">Visual Studio Code<\/a> and our C++ extensions (<a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode.cmake-tools\">CMake Tools<\/a> and <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode.cpptools\">C\/C++<\/a>) and let us know what you think. We would love to see what you contribute to our<a href=\"https:\/\/github.com\/microsoft\/vscode-cmake-tools\">\u00a0repo<\/a>. Please create an\u00a0<a href=\"https:\/\/github.com\/microsoft\/vscode-cmake-tools\/issues\/\">issue<\/a>\u00a0if\u00a0there\u2019s\u00a0anything\u00a0you\u2019d\u00a0like to see and upvote\/downvote any existing issues.\u00a0Comment below or reach us via email at\u00a0<a href=\"mailto:visualcpp@microsoft.com\">visualcpp@microsoft.com,<\/a>\u00a0via X at\u00a0, or via Bluesky at\u00a0<a href=\"https:\/\/bsky.app\/profile\/msftcpp.bsky.social\">@msftcpp.bsky.social<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We&#8217;re excited to announce the latest 1.22 release of the CMake Tools extension for Visual Studio Code. This update brings a host of new additions, including project outline updates for filtering and bookmarking CMake targets in large CMake projects and expanded CTest support to customize this output. To view the full list of updates with [&hellip;]<\/p>\n","protected":false},"author":85413,"featured_media":36237,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,266,275],"tags":[],"class_list":["post-36235","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus","category-cmake","category-visual-studio-code"],"acf":[],"blog_post_summary":"<p>We&#8217;re excited to announce the latest 1.22 release of the CMake Tools extension for Visual Studio Code. This update brings a host of new additions, including project outline updates for filtering and bookmarking CMake targets in large CMake projects and expanded CTest support to customize this output. To view the full list of updates with [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/36235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/85413"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=36235"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/36235\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/36237"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=36235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=36235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=36235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}