CLion 2021.3 Help

Manage CMake project files

Add new files

  1. In the Project tree, right-click the folder you want to add a file into and select New from the context menu. Choose the desired file type:

    Adding new files from the Project view
  2. Specify the name, type, and additional options for the new file.

    For C++ Class, C/C++ Source, and C/C++ Header file templates, CLion will prompt you to add the new file to one or several existing CMake targets:

    Adding a new file to an existing CMake target

  3. If you have selected the target on the previous step, the new entry will be automatically added to CMakeLists.txt:

    New file added to the selected CMake target

Manage included files

  • When you include a header or source file located under the project root into any project file, CLion treats it as a project file as well. There is no need to list such includes manually in CMakeLists.txt.

    CMake project: included files

Add existing files

To add a file which is not included in any of the project files or CMake targets, you need to specify it as a project file manually. Use one of the following ways depending on the file location:

  • If the file is located under the project root, add it to a target using add_executable() or add_library() command. For example:

    Adding an existing file to the list of sources

    When the directory that contains non-project sources is located under the project root, you can also mark it as library: right-click in the Project view and select Mark Directory As | Library Files from the context menu.

  • To use library files located outside the project root, you need to specify header search paths so that CLion can index the directories and provide completion and navigation for the #include statements:

    include_directories(${MY_EXTERNAL_SOURCE__DIR})

    Where MY_EXTERNAL_SOURCE__DIR is the required external path.

    Refer to Quick CMake Tutorial: Adding include directories for more information.

Upon any of these actions, CLion will prompt you to reload the project (when automatic reload is disabled).

Last modified: 28 July 2021