Minimal Qt/CMake template

I’m starting working on the GUI submission tool for Acoustid and I wanted to use CMake instead of qmake for building the application. I couldn’t find anywhere a simple example of what do I have to put into my CMakeLists.txt in order to build a Qt application while correctly handling all moc files, ui files and resources.

Here is a minimal template that can be used for starting a Qt/CMake project from scratch:

cmake_minimum_required(VERSION 2.6)

project(myproject)

find_package(Qt4 COMPONENTS QtCore QtGui QtNetwork REQUIRED)
include(${QT_USE_FILE})

set(myproject_HEADERS someclass.h)
set(myproject_SOURCES someclass.cpp main.cpp)
set(myproject_UIS myproject.ui)
set(myproject_RESOURCES myproject.qrc)

qt4_wrap_cpp(myproject_MOC ${myproject_HEADERS})
qt4_wrap_ui(myproject_UIS_H ${myproject_UIS})
qt4_add_resources(myproject_RESOURCES_CPP ${myproject_RESOURCES})

include_directories(${CMAKE_CURRENT_BINARY_DIR})

add_executable(myproject
    ${myproject_SOURCES}
    ${myproject_MOC}
    ${myproject_UIS_H}
    ${myproject_RESOURCES_CPP}
)

target_link_libraries(myproject ${QT_LIBRARIES})