JetBrains Fleet 1.28 Help

Getting started with C++

This tutorial gets you up to speed with C++ development in JetBrains Fleet. It covers the installation, project setup, and working with code.

Install Fleet

  1. Install JetBrains Toolbox 1.22.10970 or later: the Download page.

  2. Make sure you are logged in JetBrains Toolbox under your JetBrains Account.

  3. In JetBrains Toolbox, click Install near the JetBrains Fleet icon.

    Download and install Fleet

Set up a workspace

Prepare a compilation database for your project

JetBrains Fleet supports C++ projects with compilation databases.

A compilation database is a JSON file named compile_commands.json, which contains structured data about every compilation unit in the project.

Open a project

  1. Press Command O or select File | Open from the menu.

  2. Select your project root folder and click Open:

    Opening a folder containing the project's compilation database
  3. The opened directory becomes the root of your workspace:

    Project opening

Switch to smart mode

Enable Smart mode

Smart Mode turns on code insight features for your C++ code.

  • Click the Smart Mode Status icon in the top-right corner. In the popup that appears, click Enable.

    Enabling Smart Mode

Troubleshooting Smart mode: LSP can't start

Smart mode can't start

This message indicates that Fleet might not have been able to download Clangd because of a firewall. Follow the steps below for a workaround.

  1. Download Clangd using the following links:

  2. Put the downloaded file into the ~/.fleet/ directory.

  3. Restart Fleet.

Here's what you can do in Smart Mode. The below is not an exhaustive list of Smart Mode features, rather a couple of examples that'll help you to get the feel of how it works in Fleet.

Spot syntax errors

  • All the errors in your code are highlighted red:

    Error highlighting for C++

Complete code automatically

  • Context-aware completion gives a list of suggestions for names, types, and keywords:

    Code completion for C++
  • Among the completion suggestions, you can find templates for common code constructs. Select one from the list, and then use Tab to move the caret between stubs:

    Inserting a live template

    Available code snippets:

    • typedef [type] [name];

    • using [name] [type];

    • namespace [name] = [namespace];

    • using namespace [identifier];

    • using [qualifier]::[name];

    • using typename [qualifier]::[name];

    • template<class [name]>

    • template<typename [name]>

    • switch ([condition]) { [cases] }

    • case [expression]:

    • goto [label];

    • dynamic_cast<[type]>([expression])

    • static_cast<[type]>([expression])

    • reinterpret_cast<[type]>([expression])

    • const_cast<[type]>([expression])

    • catch ([declaration]) { [statements] }

    • concept [name] = [constraint];

    • #define [macro]([args])

Reduce caret jumps

  • To transform an already typed expression into a different one without moving the caret, add a dot at the end. You will see postfix completion options among the list of suggestions:

    Postfix completion suggestions

    For example, you can choose if, and the initial expression will get wrapped into an if statement:

    Postfix completion result

View parameter information

  • Press Command I to get the list of parameter names in a function call:

    Parameter info for C++

    Click Show all to view all the usages.

Check documentation in a popup

  • Hover over a class, function, field, or another element to see where and how it is defined:

    Quick definition popup

Rename code items

  • Select an item to be renamed, press Control R, and enter the new name:

    Renaming a symbol
  • Navigate to the declaration of a symbol with Command B.

  • Find usages of a symbol with Command U:

    Find Usages results
  • Skim over the errors with Command E and Command Shift E.

Build and run your program

You can build and run your C/C++ code using run configurations. Find below an example for the case of CMake:

{ "configurations": [ { "type": "command", "name": "Build", "program": "cmake", "args": ["--build", "$PROJECT_DIR$/cmake-build-debug", "--target", "program_name"], }, { "type": "command", "name": "Run", "program": "$PROJECT_DIR$/cmake-build-debug/program_name", }, ] }

    Last modified: 25 October 2023