Setting Up a CMake Project
CMake is an alternative to qmake for automating the generation of build configurations. It controls the software compilation process by using simple configuration files, called CMakeLists.txt
files. CMake generates native build configurations and workspaces that you can use in the compiler environment of your choice.
Qt Creator automatically detects the CMake executable specified in the PATH
. You can add paths to other CMake executables and use them in different build and run kits.
Qt Creator automatically runs CMake to regenerate makefiles when you edit a CMakeLists.txt
configuration file in a project. If the project uses several configuration files, you can disable the automatic generation of makefiles by selecting Tools > Options > Build & Run > CMake. Makefiles are automatically regenerated when you build the project.
Adding CMake Tools
Qt Creator supports CMake version 3.0, or later. For best results you should use CMake version 3.3.2 or later. Earlier versions provide less information to the code model, which will then fail to resolve includes and defines.
To specify paths to CMake executables and to add them to kits:
- Select Tools > Options > Build & Run > CMake > Add.
- In the Name field, specify a name for the tool.
- In the Path field, specify the path to the CMake executable.
- Deselect the Autorun CMake check box to prevent Qt Creator from running CMake when you make changes to
CMakeLists.txt
files. - Select Apply to save your changes.
- Select the Kits tab to add the CMake tool to a build and run kit. The kit also specifies the CMake Generator that is used for producing project files for Qt Creator and the configuration variables that are used:
For more information, see Adding Kits.
Creating CMake Projects
To create a CMake project:
- Select File > New File or Project > Non-Qt Project > Plain C Application or Plain C++ Application > Choose.
- In the Name field, enter a name for the project.
- In the Create in field, enter the path for the project files, and then select Next (or Continue on macOS).
- In the Build system field, select CMake, and then select Next.
- Select CMake kits for the platforms that you want to build the application for, and then select Next.
- Review the project settings, and click Finish (or Done on macOS).
- Select Run CMake to generate a .cbp file.
Some projects require command line arguments to the initial CMake call. CMake will remember the arguments during subsequent calls.
Qt Creator generates a main.cpp
and CMakeLists.txt
file that you can modify in the Edit mode.
Opening CMake Projects
To open an existing CMake project:
- Select File > Open File or Project.
- Select the
CMakeLists.txt
file from your CMake project. - Select a kit that is configured to use CMake for building the project.
- In Projects, right-click the project name to open the context menu, and then select Run CMake to have the project contents listed in the view.
Editing CMake Configuration Files
To open a CMakeLists.txt file for editing, right-click it in the Projects view and select Open with > CMake Editor.
The following features are supported:
- Pressing F2 when the cursor is on a filename to open the file
- Keyword completion
- Code completion
- Auto-indentation
- Matching parentheses and quotes
Building CMake Projects
To build CMake projects, select Build Project or press Ctrl+B (or Cmd+B on macOS).
Qt Creator builds CMake projects by running make
, mingw32-make
, nmake
, or ninja
depending on the selected kit.
By default, Qt Creator uses the Default build configuration. You can select another build configuration in Projects > Build Settings > Edit build configuration. In addition to debug and release build configurations, you can create a release build that contains debug information or a release build with the smallest possible size.
In the Build directory field, you can specify the directory in which the project is built (shadow build).
To view all settings, select the Advanced check box.
To modify the value of a build setting, select it, and then select Edit. The new value is displayed in italics until you save the changes by selecting Apply Configuration Changes. Any configuration change might trigger a follow-up configuration change, so keep saving until no more values are displayed in italics.
You can add arguments and targets for the build command in Build Steps.
You can add arguments and targets for the clean command in Clean Steps.
The build errors and warnings are parsed and displayed in the Issues output pane.
Running CMake Projects
Qt Creator automatically adds Run Configurations for all targets specified in the CMake project file.
To run CMake projects, select Run or press Ctrl+R (or Cmd+R on macOS).
Deploying CMake Projects to Embedded Linux Devices
Qt Creator cannot extract files to be installed from a CMake project, and therefore, only executable targets are automatically added to deployment files. You must specify all other files in the QtCreatorDeployment.txt
file that you create and place in either the root directory of the CMake project or the build directory of the active build configuration. Currently, Qt Creator first checks the root directory and only if no QtCreatorDeployment.txt
exists it checks the active build directory.
Use the following syntax in the file:
<deployment/prefix> <relative/source/file1>:<relative/destination/dir1> ... <relative/source/filen>:<relative/destination/dirn>
Where:
<deployment/prefix>
is the (absolute) path prefix to where files are copied on the remote machine.<relative/source/file>
is the file path relative to the CMake project root. No directories or wildcards are allowed in this value.<relative/destination/dir>
is the destination directory path relative todeployment/prefix
.
To automate the creation of QtCreatorDeployment.txt
file:
- Define the following macros in the top level
CMakeLists.txt
file:file(WRITE "${CMAKE_SOURCE_DIR}/QtCreatorDeployment.txt" "<deployment/prefix>\n") macro(add_deployment_file SRC DEST) file(RELATIVE_PATH path ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) file(APPEND "${CMAKE_SOURCE_DIR}/QtCreatorDeployment.txt" "${path}/${SRC}:${DEST}\n") endmacro() macro(add_deployment_directory SRC DEST) file(GLOB_RECURSE files RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${SRC}/*") foreach(filename ${files}) get_filename_component(path ${filename} PATH) add_deployment_file("${filename}" "${DEST}/${path}") endforeach(filename) endmacro()
- Use
add_deployment_file(<file/name>)
to add files andadd_deployment_directory(<folder/name>)
to add directories (including subdirectories) to theQtCreatorDeployment.txt
file. - Re-run
cmake
after you add or remove files using the macros.
Adding External Libraries to CMake Projects
Through external libraries, Qt Creator can support code completion and syntax highlighting as if they were part of the current project or the Qt library.
Qt Creator detects the external libraries using the FIND_PACKAGE()
macro. Some libraries come with the CMake installation. You can find those in the Modules
directory of your CMake installation.
Note: If you provide your own libraries, you also need to provide your own FindFoo.cmake
file. For more information, see CMake FAQ.
Syntax completion and highlighting work once your project successfully builds and links against the external library.
© 2016 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.