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:
J'ai rajouté un fichier CMakeLists.txt et un répertoire build pour les fichiers résultats de cmake.
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
Voici le fichier CMakeLists.txt :
Je lance la génération des Makefile :
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})
J'obtient le résultat suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 cd systray/build cmake ..
On peut voir que la macro QT4_ADD_RESOURCES ne me génère pas de fichier ressource.
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
Et lorsque je lance la compilation, j'obtient l'erreur suivante :
Voila, j'aimerais savoir pourquoi la macro de cmake ne me génère pas les fichiers nécessaire pour les ressources?
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
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
Partager