Imported Targets

Each Qt module that is loaded defines a CMake library target. The target names start with Qt5::, followed by the module name. For example: Qt5::Core, Qt5::Gui. Pass the name of the library target to target_link_libraries to use the respective library.

Note: Since Qt 5.15, the CMake targets are also available as Qt::Core, Qt::Gui, and so on. This eases writing CMake code that can work with both Qt 5 and Qt 6.

Imported targets are created with the same configurations as when Qt was configured. That is:

  • If Qt was configured with the -debug switch, an imported target with the DEBUG configuration is created.
  • If Qt was configured with the -release switch, an imported target with the RELEASE configuration is created.
  • If Qt was configured with the -debug-and-release switch, then imported targets are created with both RELEASE and DEBUG configurations.

If your project has custom CMake build configurations, you have to map your custom configuration to either the debug or the release Qt configuration.

 find_package(Qt5 COMPONENTS Core REQUIRED)

 set(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-arcs -ftest-coverage")

 # set up a mapping so that the Release configuration for the Qt imported target is
 # used in the COVERAGE CMake configuration.
 set_target_properties(Qt5::Core PROPERTIES MAP_IMPORTED_CONFIG_COVERAGE "RELEASE")