2.2 Le fichier CMakeLists.txt

Maintenant il faut dire à CMake comment compiler tout ça :

1
2
3
4
5
6
7
8
9
10
11
12
13
project(TestDeBase)
cmake_minimum_required(VERSION 2.6)
find_package(Qt4 REQUIRED)

include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR})

set(TestDeBase_SRCS main.cpp)

qt4_automoc(${TestDeBase_SRCS})

add_executable(testDeBase ${TestDeBase_SRCS})

target_link_libraries(testDeBase ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})

Faisons tout cela dans l'ordre :

On donne le nom du projet, rien de bien spectaculaire.

On donne la version minimale de CMake à utiliser pour pré-compiler ce programme (autrement CMake râle).

On demande à CMake si il a trouvé Qt4.

Ensuite on inclue le dossier où sont les includes de Qt4 (généralement /usr/include). Et on inclue le dossier dans lequel on va faire la précompilation.

Et pourquoi on fait ça, on ne l'a jamais fait avant ?

C'est parce que CMake va nous générer des fichiers (enfin pas tout de suite, mais juste après), et ces fichiers vont être inclues dans les sources de notre programme avant qu'il soit compilé par make, donc il faut inclure le fichier ${CMAKE_CURRENT_BINARY_DIR} pour pouvoir faire ces inclusions.

La fonction set permet de créer des variables, ici on créé une variable avec tout les fichier .cpp.

Ensuite on passe ces fichiers à la fonction qt4_automoc qui s’occupe de générer les fichiers de Qt.

Ensuite on passe toutes les sources à la fonction add_executable qui créé le programme.

Et enfin, on lie le programme à Qt avec la fonction target_link_libraries. Les variables ${QT_QTCORE_LIBRARY} et ${QT_QTGUI_LIBRARY} contiennent les librairies dont nous avons besoin.