CMake und Qt Testmodul
-
Hallo,
ich hab folgendes Problem: ich wollte ein einfaches Beispiel mit cmake basteln, das einen UnitTest mit der Qt Test Library kompiliert. Ich hab das Teil zuerst mit einer *.pro-Datei kompiliert, hat geklappt. Allerdings ergibt der Lauf mit dem von CMake generierten Makefile einen Linkerfehler. Wäre schön, wenn jemand eine Lösung findet, im Web hab ich leider kein Beispiel gefunden.Die CMake-Datei die nicht funktioniert:
project(MoneyTest) cmake_minimum_required(VERSION 2.6.0) find_package(Qt4 REQUIRED) include( ${QT_USE_FILE} ) set(QT_USE_QTTEST TRUE) set(project_SRCS Money.h Money.cpp MoneyTest.cpp MoneyTest.h ) set(project_MOCS MoneyTest.h ) qt4_wrap_cpp(project_SRCS ${project_MOCS} ) include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_executable(MoneyTest ${project_SRCS}) target_link_libraries(MoneyTest ${QT_LIBRARIES})
Fehlermeldung des Compiler/Linker
[ 50%] Building CXX object CMakeFiles/MoneyTest.dir/Money.cpp.o [100%] Building CXX object CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o Linking CXX executable MoneyTest CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o: In function `QTest::qWait(int)': MoneyTest.cpp:(.text+0x70): undefined reference to `QTest::qSleep(int)' CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o: In function `QTest::simulateEvent(QWidget*, bool, int, QFlags<Qt::KeyboardModifier>, QString, bool, int)': MoneyTest.cpp:(.text+0xd3): undefined reference to `QTest::defaultKeyDelay()' MoneyTest.cpp:(.text+0xed): undefined reference to `QTest::defaultKeyDelay()' MoneyTest.cpp:(.text+0x18a): undefined reference to `QTest::qWarn(char const*)' CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o: In function `QTest::mouseEvent(QTest::MouseAction, QWidget*, Qt::MouseButton, QFlags<Qt::KeyboardModifier>, QPoint, int)': MoneyTest.cpp:(.text+0xead): undefined reference to `QTest::defaultMouseDelay()' MoneyTest.cpp:(.text+0xeca): undefined reference to `QTest::defaultMouseDelay()' MoneyTest.cpp:(.text+0x1404): undefined reference to `QTest::qWarn(char const*)' CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o: In function `MoneyTest::testAddition()': MoneyTest.cpp:(.text+0x156a): undefined reference to `QTest::qVerify(bool, char const*, char const*, char const*, int)' MoneyTest.cpp:(.text+0x1595): undefined reference to `QTest::qVerify(bool, char const*, char const*, char const*, int)' MoneyTest.cpp:(.text+0x15d1): undefined reference to `QTest::qVerify(bool, char const*, char const*, char const*, int)' MoneyTest.cpp:(.text+0x15f7): undefined reference to `QTest::qVerify(bool, char const*, char const*, char const*, int)' CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o: In function `MoneyTest::testSubtraction()': MoneyTest.cpp:(.text+0x16be): undefined reference to `QTest::qVerify(bool, char const*, char const*, char const*, int)' CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o:MoneyTest.cpp:(.text+0x16e9): more undefined references to `QTest::qVerify(bool, char const*, char const*, char const*, int)' follow CMakeFiles/MoneyTest.dir/MoneyTest.cpp.o: In function `main': MoneyTest.cpp:(.text+0x1801): undefined reference to `QTest::qExec(QObject*, int, char**)' collect2: ld returned 1 exit status make[2]: *** [MoneyTest] Fehler 1 make[1]: *** [CMakeFiles/MoneyTest.dir/all] Fehler 2 make: *** [all] Fehler 2
Die *.pro-Datei die funktioniert.
CONFIG += qtestlib SOURCES += Money.cpp HEADERS += Money.h \ MoneyTest.h SOURCES += MoneyTest.cpp