Bonjour,

Je suis sous Linux RHEL6, j'ai installé CMake 2.8.8 et QT 4.8.5.
J'essaye de compiler l'un des exemples qt (/usr/local/Trolltech/Qt-4.8.5/examples/desktop/systray).
Dans cet exemple il y'a les fichiers suivants:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
systray/
	main.cpp
	systray.qrc
	window.cpp
	window.h
	images/
		bad.svg
		heart.svg
		trash.svg
J'ai rajouté un fichier CMakeLists.txt et un répertoire build pour les fichiers résultats de cmake.

Voici le fichier CMakeLists.txt :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
cmake_minimum_required(VERSION 2.8)
 
project("systray_project")
 
FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})
ADD_DEFINITIONS(${QT_DEFINITIONS})
 
set(SOURCE_FILES window.cpp main.cpp)
set(HEADER_FILES window.h)
set(RESOURCE_FILES systray.qrc)
 
QT4_WRAP_CPP(MOC_FILES ${HEADER_FILES})
QT4_ADD_RESOURCES(RCC_FILES "${RESOURCES_FILES}")
 
message("SOURCE_FILES : ${SOURCE_FILES}")
message("HEADER_FILES : ${HEADER_FILES}")
message("RESOURCE_FILES : ${RESOURCE_FILES}")
message("MOC_FILES : ${MOC_FILES}")
message("RCC_FILES : ${RCC_FILES}")
 
include_directories("${CMAKE_CURRENT_BINARY_DIR}")
 
add_executable(systray ${SOURCE_FILES} ${MOC_FILES} ${RCC_FILES})
 
target_link_libraries(systray ${QT_LIBRARIES})
Je lance la génération des Makefile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
cd systray/build
cmake ..
J'obtient le résultat suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-- The C compiler identification is GNU 4.4.6
-- The CXX compiler identification is GNU 4.4.6
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt4: /usr/local/Trolltech/Qt-4.8.5/bin/qmake (found version "4.8.5") 
SOURCE_FILES : window.cpp;main.cpp
HEADER_FILES : window.h
RESOURCE_FILES : systray.qrc
MOC_FILES : /systray/build/moc_window.cxx
RCC_FILES : 
-- Configuring done
-- Generating done
-- Build files have been written to: /systray/build
On peut voir que la macro QT4_ADD_RESOURCES ne me génère pas de fichier ressource.
Et lorsque je lance la compilation, j'obtient l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@dev10 build]# make
[ 25%] Generating moc_window.cxx
Scanning dependencies of target systray
[ 50%] Building CXX object CMakeFiles/systray.dir/window.cpp.o
[ 75%] Building CXX object CMakeFiles/systray.dir/main.cpp.o
[100%] Building CXX object CMakeFiles/systray.dir/moc_window.cxx.o
Linking CXX executable systray
CMakeFiles/systray.dir/main.cpp.o: In function `main':
main.cpp:(.text+0x1c): undefined reference to `qInitResources_systray()'
collect2: ld returned 1 exit status
make[2]: *** [systray] Error 1
make[1]: *** [CMakeFiles/systray.dir/all] Error 2
make: *** [all] Error 2
Voila, j'aimerais savoir pourquoi la macro de cmake ne me génère pas les fichiers nécessaire pour les ressources?
Pour créer le fichier CMakeLists.txt je me suis inspiré du tutoriel suivant.

J'ai testé la commande rcc directement sur le fichier qrc, cela semble fonctionner...le code généré apparaît bien dans le terminal.

Merci d'avance pour votre aide